Skip to content

vu-cs4289-26s/Postcard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

213 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vouch

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.

Architecture Diagram


Project Structure

backend/

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 3000

frontend/

React 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 phone

infrastructure/

AWS 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 resources

Getting Started

The fastest way to get the full stack running locally:

  1. Clone the repo

    git clone <repo-url>
    cd Vouch
  2. 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
  3. 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
  4. Open the app — download Expo Go on your phone and scan the QR code, or press i for iOS simulator / a for Android emulator.

Seed accounts all use the password password123.

About

Social travel app for documenting and sharing experiences through location-based photo postcards. Built with React Native (Expo), Node.js, PostgreSQL, and AWS. Won 3rd Place in the Vanderbilt CS Immersion Showcase.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors