refire-forum
Serverless discussion forum built with React, Redux and Firebase using refire and refire-app.
Base UI components are from excellent Elemental UI.
Live demo
https://refire.firebaseapp.com
Features
- Categories, boards and threads
- Paging for boards and threads
- Quoting when replying to posts
- Thread and Post previews
- Markdown support
- Emoji support using
:emoji:
syntax🔥 - User profile pages
- Login with Google, Facebook, Github & Twitter accounts
- Admin tools (delete threads & single posts, lock/unlock threads)
- CSS-in-JS styled components, fully themeable
- Dark & light color themes
- Upvoting single posts
- Users can edit their own posts
Roadmap
- Allowing boards and threads to be bookmarked properly
- Search using redux-search
- Image attachment upload to Firebase
- Allowing users to edit their own thread titles
- Single post linking
- Show list of available emojis
- Sticky threads
- Thread and post tagging
- Notifications
- Reactions to posts with emojis
- Improved admin section
- Moderating
- User editable theme
Deploying your own instance
-
Create your new app in Firebase dashboard
-
Copy and paste
apiKey
from your Firebase app console'sOverview > Add Firebase to your web app
tosrc/config.js
-
Enable
Sign-in providers
you want to use in your Firebase app console'sAuthentication > Sign-in method
settings -
Change
projects.default
value to your app name in.firebaserc
-
Run
npm install
andnpm run build
-
Run
npm run login
to login to Firebase -
Run
npm run bootstrap
to copy the initial data structure to Firebase -
Run
npm run deploy
to deploy the app and security rules to Firebase
Running locally
npm start
will start the development server on localhost:4000
Adding admin users
Create adminUsers
path in your Firebase and set your admin user's uid
as key and true
as value:
"adminUsers": {
"google:123456789": true
}
Customizing settings
You can edit default paging settings by changing settings/BOARD_PAGE_SIZE
, settings/THREAD_PAGE_SIZE
and settings/THREAD_PAGE_LIMIT
.
You can configure date format by changing settings/DATE_FORMAT
.
Custom forum name
Export siteName
in ./src/config.js
.
export const siteName = "My forum"
Security rules
Firebase security rules are defined in security-rules.bolt
.
Use npm run build:rules
to generate security-rules.json
after making changes.
Use npm run deploy:rules
to deploy security rules.
License
MIT