projects-forum is a reusable, mobile-responsive forum platform built with Angular + Firebase.
It is designed for product/project communities where users can ask questions, report issues, and share feedback.
A mobile-responsive Angular web forum where users can ask questions or report issues about multiple projects. The app leverages Firebase Auth and Firestore to power core forum behavior and is structured to be reusable across teams.
question or issue).question or issue)ng test)src/app/core/: firebase bootstrap, models, services, guardssrc/app/features/: feature pages/components (auth + forum)src/app/layout/: app shell/navigationsrc/app/shared/: reusable shared componentspublic/i18n/: translation JSON filesscripts/generate-environment.mjs: generates src/environments/environment.ts from .envfirestore.rules + firestore.indexes.json: Firestore security/index configSecrets/config live in .env (excluded from git). Start from .env.example.
A helper script (npm run prepare:env) reads these values and writes src/environments/environment.ts.
That generated file is simply a build artifact used by the Angular compiler; the only “secrets”
owned by your repo remain in .env. Firebase web SDK configuration values are intended to be
public‑facing, but if you’d rather keep environment.ts out of version control you can add it
to .gitignore and regenerate it as part of your build/test steps.
Required variables:
FORUM_FIREBASE_API_KEYFORUM_FIREBASE_AUTH_DOMAINFORUM_FIREBASE_PROJECT_IDFORUM_FIREBASE_STORAGE_BUCKETFORUM_FIREBASE_MESSAGING_SENDER_IDFORUM_FIREBASE_APP_IDFORUM_FIREBASE_MEASUREMENT_IDFORUM_DEFAULT_PROJECTFORUM_PROJECTS (comma-separated)FORUM_ADMIN_EMAILFORUM_MAIL_COLLECTIONTo deploy to GitHub Pages with custom environment values:
node scripts/generate-environment.mjs will generate src/environments/environment.ts from these values.Note: If you only set environment variables (not secrets), the workflow will not pick them up. Always use repository secrets for build-time values.
npm install
Create .env from .env.example and fill your values.
Run the app:
npm start
http://localhost:4200.firebase deploy --only firestore
Admin moderation is allowed for users with either the admin custom claim or the verified email configured as FORUM_ADMIN_EMAIL.
If you change that admin email, keep firestore.rules in sync and redeploy Firestore rules.
projects collection in Firestore with docs like:core-platform -> { "name": "Core Platform" }payments-api -> { "name": "Payments API" }If projects is empty, the app uses FORUM_PROJECTS from .env as fallback.
Firebase does not send Firestore-triggered emails automatically out of the box.
This app is prepared to enqueue notification emails into FORUM_MAIL_COLLECTION (default: mail).
To send real emails, install Firebase Trigger Email extension (firebase/firestore-send-email) and configure SMTP credentials.
Reference:
npm run prepare:env: generate src/environments/environment.ts from .envnpm start: generate env + run dev servernpm run build: generate env + production buildnpm run lint: run ESLintnpm run test:ci: generate env + headless unit testsnpm run format: format all files with Prettiernpm run format:check: verify formattingTwo workflows are included:
.github/workflows/ci.ymlpush/pull_requestGates: format:check, lint, test:ci, build
.github/workflows/deploy-gh-pages.ymlmaindist/forum-app/browser to GitHub Pages.env values with your Firebase project values.FORUM_PROJECTS and FORUM_DEFAULT_PROJECT.FORUM_ADMIN_EMAIL.public/i18n/.REPLACE_ME placeholder values in .env.example..env, replace default/demo values if using your own Firebase project.src/assets/icons/ and reference it from templates. Ensure icons include appropriate aria-* attributes for accessibility.