BullFood is a user-friendly website designed for students at the University of South Florida (USF) to discover free food events on campus. Users can subscribe to a newsletter to receive daily updates about featured food events.
- Frontend: React (with Typescript), Redux, TailwindCSS, shadcn/ui
- Backend: NestJS, Express.js
- Databases: MongoDB, Redis
- Message broker: RabbitMQ
- Deployment: AWS EC2, Docker, GitHub Actions, Vercel
- NestJS Backend: Built with a focus on OOP and adherence to SOLID principles.
- Email Notifications: Utilize RabbitMQ for efficient email delivery to users.
- Caching: Implement Redis to cache frequently requests.
- CI/CD Integration: Automated deployment pipeline using Docker and GitHub Actions.
Clone the BullFood repository to your local machine: bash Copy code
git clone https://github.com/devltt404/bull-food
cd bull-food-
Navigate to the
clientfolder:cd client -
Install Dependencies
pnpm i
-
Copy the
.env.exampleto.env.cp .env.example .env
-
Navigate to the
serverfolder:cd ../server -
Install client dependencies
pnpm i
-
Setup env variables
Copy the
.env.exampleto.envand update the variables.cp .env.example .env
You must provide values for
MAIL_USERandMAIL_PASSin.envfile to setup Gmail SMTP. These should be you Gmail email address and its app password. If you use another SMTP server other than Gmail, also update the values forMAIL_HOSTandMAIL_PORT.BC_SESSION_IDis optional. You can get its value by logging into https://bullsconnect.usf.edu/ and copying the value ofCG.SessionIDcookie.
We use Docker Compose to set up and run MongoDB, Redis, and RabbitMQ services locally.
-
Start services
docker-compose -f docker-compose.local.yml up -d
-
Verify running Containers
docker ps
You should see the following services listed:
- mongodb on port
27018 - redis on port
6379 - rabbitmq on port
5672and web UI on port15672
pnpm run devAccess the website through your browser at: http://localhost:5173
