CalendarMedia is a unique social web app designed to help users connect through shared events. Instead of focusing on just posts and photos like a more conventional social media, CalendarMedia centers around a user's calendar and their events. This allows the user to discover and share events that friends or nearby users are attending. With CalendarMedia, users can easily create and customize their own events and invite others to join them. The app features an interface where individuals can explore local happenings, from casual gatherings to community festivals. Users can also follow friends to stay updated on their activities. By prioritizing events over traditional social media content, CalendarMedia encourages real-world interactions and helps users make the most of their lives outside of other apps that facilitate exclusively online interaction.
The dev environment uses Docker Compose to start a python server, javascript frontend, and mongodb database. It creates Docker containers and installs the required packages into those containers so that all developers will be using the same versions.
- Install and start Docker
- Clone the repository and navigate to the project directory
- Run the command
docker compose up- Alternatively, run
docker compose up -dto start without attaching and then rundocker compose logs --followto attach to logs
- Alternatively, run
- To stop the environment press
Ctrl-Cin the terminal - To clean the environment run the command
docker system prune -af- Do this to fix any environment issues or after changing package requirements
-
Make sure docker container is running
-
Enter the command
docker exec -it deepseek-frontend npx vitestto test the frontend- Testing folder is located at frontend/src/__tests__
-
Enter the command
sh scripts/test_backend.shto test the backend
-
The project includes automated Selenium tests located in the
/testingdirectory. These tests cover core functionality like user registration, login, event creation, and friend management.
- Python 3.x
- Firefox browser installed
- Virtual environment (recommended)
Windows (PowerShell)
cd testing
.\run_tests.ps1Linux/MacOS
cd testing
chmod +x run_tests.sh
./run_tests.shtest_register.py- Tests user registrationtest_registerlogin.py- Tests registration and login flow with error casestest_createevent.py- Tests event creation functionalitytest_profileflow.py- Tests profile management featurestest_addfriend.py- Tests friend request and acceptance flow
The application is deployed using the following services:
- Frontend: Vercel
- Backend: Render
- Database: MongoDB Atlas
- Connect your Git repository (e.g., GitHub, GitLab, Bitbucket) to Vercel.
- Configure the project settings:
- Framework Preset:
Vite - Build Command:
npm run build - Output Directory:
build - Install Command:
npm install
- Framework Preset:
- Set up environment variables if needed (e.g.,
VITE_API_BASE_URLpointing to your Render backend URL). - Deploy the project. Vercel will automatically build and deploy upon pushes to the connected branch (e.g.,
main).
- Create a new Web Service on Render.
- Connect your Git repository.
- Configure the service settings:
- Environment:
Python 3 - Root Directory:
backend(or wherever your backend Dockerfile is located) - Build Command:
cd backend && pip install -r requirements.txt - Start Command:
cd backend && gunicorn app:app
- Environment:
- Add environment variables:
MONGO_URI: Your MongoDB Atlas connection string.MONGO_DBNAME: The name of your database in Atlas (e.g.,appdb).- Any other required variables (e.g.,
JWT_SECRET).
- Deploy the service. Render will build the Docker image and start the service. Ensure the Dockerfile correctly exposes the port Render expects (usually 10000, but check Render's documentation).
- Create a free or paid cluster on MongoDB Atlas.
- Configure database access:
- Create a database user with read/write privileges to the target database.
- Configure network access to allow connections from Render's IP addresses or allow access from anywhere (
0.0.0.0/0).
- Get the connection string (select "Connect" -> "Drivers" and choose the Python driver version). Replace
<password>with the user's password. - Use this connection string as the
MONGO_URIenvironment variable in your Render backend service. - Ensure the text index for the
userscollection is created (should already be called whenever app is built):
- Tristan Shillingford (trshillingford@gmail.com)
- Jacob Robertson (jacobr10183@gmail.com)
- Dominic Colin Gaines (dcolingaines@gmail.com)
- Ian Turner (i.r.turner55@gmail.com)
- Joe Zelinsky (jzelinsky1818@gmail.com)