Vouch is a social travel app where you document places you've been through photo-based "postcards" — each one tied to a location, rating, and short description. You can group postcards into trips and folders, follow friends, and explore what other people are vouching for.
Node.js + Express API written in TypeScript. Handles authentication, all business logic, and talks directly to a PostgreSQL database using raw SQL (no ORM). Photos are stored in AWS S3 and served through CloudFront.
cd backend
cp .env.example .env # fill in your Postgres config, JWT_SECRET, and AWS credentials
npm install
npm run dev # starts dev server on port 3000React Native app built with Expo SDK 54 and Expo Router for file-based navigation. Communicates with the backend over a REST API and uses AsyncStorage for persisting the auth token locally.
cd frontend
cp .env.example .env # set EXPO_PUBLIC_API_URL to your backend's address
npm install
npm start # opens Expo dev server — scan QR with Expo Go on your phoneAWS CDK v2 stack written in TypeScript that provisions the full cloud infrastructure: S3 + CloudFront for photo storage and delivery, and a VPC with EC2 (backend API server) and RDS PostgreSQL (private subnet) for compute and data.
cd infrastructure
cp .env.example .env # set your AWS account ID and region
npm install
npx cdk deploy # deploys AWS resourcesThe fastest way to get the full stack running locally:
-
Clone the repo
git clone <repo-url> cd Vouch
-
Set up the backend
cd backend cp .env.example .env # edit with your Postgres credentials and JWT_SECRET npm install npm run db:reset # creates tables and seeds with sample data npm run dev
-
Set up the frontend (in a new terminal)
cd frontend cp .env.example .env # set EXPO_PUBLIC_API_URL=http://<your-local-ip>:3000 npm install npm start
-
Open the app — download Expo Go on your phone and scan the QR code, or press
ifor iOS simulator /afor Android emulator.
Seed accounts all use the password password123.
