The Loop is a full-stack web application for campus events. A student finds events, receives personalized recommendations, and coordinates travel with friends. The application uses FastAPI for the backend and React for the frontend.
Live site: https://the-loop-5m7u.onrender.com/
- A cosine-similarity engine ranks events against a per-user interest vector.
- The interest vector updates when a user joins an event.
- A WebSocket service provides chat and online status.
- A server-side connection manager sends the status of each user to friends.
- The client reconnects automatically with an exponential backoff.
- A user creates a carpool group with a capacity limit and an owner.
- The Google Maps API provides the route information.
- The application uses JWT authentication with Google OAuth sign-in.
- The backend defines 8 relational models and about 27 REST endpoints.
- The backend uses SQLAlchemy and Pydantic with PostgreSQL. SQLite is available for local development.
- The frontend uses React 18, Vite, Tailwind CSS, and Framer Motion. It installs as a PWA.
- The application runs on Render. A scheduled GitHub Actions job calls the health endpoint to prevent cold starts.
- FastAPI, React
- PostgreSQL, SQLAlchemy, Pydantic
- WebSockets
- JWT, Google OAuth
- Google Maps API
- Render
- Install the dependencies.
cd backend pip install -r requirements.txt - Copy the environment template and set the values.
Set
cp .env.example .env
DATABASE_URL, the JWT secret, and the Google OAuth credentials. - Start the server.
uvicorn main:app --reload
- Install the dependencies and start the development server.
cd frontend npm install npm run dev