Serverless discussion forum built with React, Redux and Firebase using refire and refire-app.
Base UI components are from excellent Elemental UI.
https://refire.firebaseapp.com
- 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
- 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
-
Create your new app in Firebase dashboard
-
Copy and paste
apiKeyfrom your Firebase app console'sOverview > Add Firebase to your web apptosrc/config.js -
Enable
Sign-in providersyou want to use in your Firebase app console'sAuthentication > Sign-in methodsettings -
Change
projects.defaultvalue to your app name in.firebaserc -
Run
npm installandnpm run build -
Run
npm run loginto login to Firebase -
Run
npm run bootstrapto copy the initial data structure to Firebase -
Run
npm run deployto deploy the app and security rules to Firebase
npm start will start the development server on localhost:4000
Create adminUsers path in your Firebase and set your admin user's uid as key and true as value:
"adminUsers": {
"google:123456789": true
}
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.
Export siteName in ./src/config.js.
export const siteName = "My forum"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.
MIT