Backend API for the BOE platform. This API is built using Firebase Functions and provides endpoints for managing schools, programs, users, blogs, events, subscriptions and more.
- Node.js 18
- Firebase Functions
- Express.js
- MongoDB/Mongoose
- Firebase Authentication
- Mailchimp Integration
- JWT Authentication
- GridFS for file storage
functions/
├── src/
│ ├── controllers/ # Business logic for each entity
│ │ ├── blogs.js
│ │ ├── events.js
│ │ ├── messages.js
│ │ ├── premiumApplication.js
│ │ ├── programs.js
│ │ ├── schools.js
│ │ ├── subscriber.js
│ │ ├── userlikes.js
│ │ └── users.js
│ ├── middlewares/ # Authentication middleware
│ │ └── token.js
│ ├── models/ # Database schemas
│ │ ├── blogsSchema.js
│ │ ├── eventsSchema.js
│ │ ├── fileSchema.js
│ │ ├── messagesSchema.js
│ │ ├── premiumApplicationSchema.js
│ │ ├── programsSchema.js
│ │ ├── schoolSchema.js
│ │ ├── subscribeSchema.js
│ │ ├── userLikeSchema.js
│ │ └── userSchema.js
│ └── routes/ # API route definitions
│ └── myRoutes.js
- Install dependencies:
cd functions
npm install- Set up environment variables:
Create an
env.jsfile in the functions directory with the following variables:
export const MONGOURI = "your_mongodb_connection_string";
export const MAILCHIMP_API_KEY = "your_mailchimp_api_key";
export const MAILCHIMP_SERVER_PREFIX = "your_mailchimp_server_prefix";- Run locally:
npm run serve- Deploy to Firebase:
npm run deployPOST /api/signup- User registrationPOST /api/login- User loginPATCH /api/users- Update user information (requires authentication)
GET /api/members- Get all membersPOST /api/members/signup- School member registrationPOST /verify- Verify member
GET /api/programs- Get all programs with schools (requires authentication)POST /api/programs- Add new program (requires authentication)GET /memberPrograms- Get school programs (requires authentication)DELETE /api/programs/:id- Delete a program
GET /api/events- Get all eventsGET /api/blogs- Get all blogsPOST /subscribe- Subscribe to newsletter
GET /userlikes- Get user likes (requires authentication)GET /memberlikes- Get member likes (requires authentication)POST /userlikes- Add new like (requires authentication)
POST /premiumApplication- Submit premium application (requires authentication)GET /premiumApplication- Get premium applications (requires authentication)GET /memberApplications- Get member applications (requires authentication)
GET /messages- Get all messages (requires authentication)GET /userMessages- Get user messages (requires authentication)POST /messages- Create new message
- JWT-based authentication
- File upload support using GridFS
- Mailchimp integration for newsletter subscriptions
- CORS enabled
- MongoDB integration with Mongoose ODM
- Express middleware for request handling
- Secure password hashing with bcrypt
npm run serve- Start Firebase emulatornpm run shell- Start Firebase Functions shellnpm run deploy- Deploy to Firebasenpm run logs- View Firebase Functions logs
- express: ^4.18.2
- firebase-admin: ^11.8.0
- firebase-functions: ^4.8.2
- mongoose: ^7.3.2
- @mailchimp/mailchimp_marketing: ^3.0.80
- bcrypt: ^5.1.0
- jsonwebtoken: ^9.0.2
- multer: ^1.4.2
- nodemailer: ^6.9.13
- sharp: ^0.33.3