Inspiration

We wanted to simplify the process of making evening plans with others by helping users find the perfect venue tailored to their mood, budget, and location. Inspired by the hassle of trying to get a group of people together, or perhaps not knowing anyone local, not to mention tediously scrolling through reviews and maps, we aimed to create a one‑stop spot‑finder that feels personal and intuitive.

What it does

Night Spot lets users select a mood (e.g., Party, Chill, Live Music), set a budget range, and enter their preferred location to instantly generate curated venue recommendations. Additional filters—like outdoor seating or pet‑friendly options—help narrow down choices, and users can book directly from the results. An algorithm groups people with similar availability, compatibility, and preferences together, streamlining the planning process.

How we built it

The frontend is a React + TypeScript SPA styled with Tailwind CSS, using React Router v6 for navigation and a custom AuthContext for session management. On the backend, Flask handles OAuth flows with Auth0, session cookies, and exposes REST endpoints for secure authentication and access to our MongoDB Atlas database. We containerized the API with Docker.

Challenges we ran into

Coordinating the OAuth redirect flow between Auth0, Flask, and our React callback route required careful session and CORS configuration. Designing a responsive, accessible UI that balances rich interactivity with performance took multiple iterations. Integrating real‑time state updates for filters and form inputs while keeping the codebase type‑safe in TypeScript also posed some complexity.

What we learned

We deepened our understanding of OAuth flows and session management in a microservices context, and sharpened our skills with FastAPI’s Authlib integration. Building a dynamic, type‑safe React UI taught us best practices for state management and component composition in TypeScript. We also gained valuable experience with Docker-based deployment pipelines on AWS.

Share this project:

Updates