Spoonful is a student-focused food discovery app built as a learning project. The idea is simple: help people find nearby food spots, browse what others have shared, and add places they think are worth checking out.
The project is still small in scope and intentionally practical. It is not meant to look like a polished startup product, and the README reflects that. Read DEVLOG.MD for in-depth development insights and story.
- Browse a list of food spots
- Search spots by name, area, or dish
- Filter by tags and ratings
- Add a new food spot
- Rate and review spots
- Sign up, log in, and verify an account
- View your own submitted spots
- Access role-based admin and owner routes for moderation and management
frontend- React + TypeScript app built with Vitebackend- Express + TypeScript APIshared- Shared types used by both sides
| Layer | Technology |
|---|---|
| Frontend | React, TypeScript, Vite |
| UI | Tailwind CSS, shadcn/ui, Radix UI |
| State/Data | React Query |
| Backend | Node.js, Express, TypeScript |
| Database | PostgreSQL + Prisma |
| Auth | Better Auth |
| Nodemailer | |
| Validation | Zod |
| Caching / Support Tools | Redis, rate limiting, Helmet |
- Landing page
- Login and signup
- Email verification
- Home feed
- Search page
- Add spot page
- Profile page
- Admin verification page
- Owner dashboard
The app includes basic role-based routing on the backend.
STUDENTusers can browse, search, add spots, and review placesADMINusers can review pending food spots and verify themOWNERusers can access higher-level admin management routes
This is part of the learning project setup and may have bugs
- Node.js 18+
- PostgreSQL
- A
.envfile for the backend
Install dependencies in both apps:
cd backend
npm install
cd ../frontend
npm installBackend environment variables are configured separately. The exact names may change as the project evolves, but the backend currently expects values for:
- database connection
- auth secrets
- email transport
- rate limiting / cache support
Check the backend source before setting up a fresh environment, since this is a work-in-progress project.
# Backend
cd backend
npm run dev
# Frontend
cd frontend
npm run dev- This is a learning project, so some flows are still rough around the edges
- Some routes and labels are still being cleaned up
- The codebase includes admin and owner sections, but the focus is still on the student experience
Useful scripts:
npm run devnpm run buildnpm run type-check
npm run devnpm run buildnpm run lint
MIT