A Smart Trip Planning App for Stress-Free Travel
Easy Going is a full-stack trip planning application that helps users plan, manage, and budget for trips. It features AI-powered recommendations, a budgeting system, and intelligent photo caching to reduce external API calls. Designed with simplicity and scalability in mind, it runs across modern browsers and mobile devices using a Node.js backend and a React Native frontend.
-
Platform: Node.js on AWS EC2 (Ubuntu)
-
Languages: JavaScript (ES6), SQL
-
Runtime: Node.js v18+
-
Package Manager: npm
-
Services:
- Firebase Authentication
- AWS EC2 (server hosting)
- PostgreSQL (via Amazon RDS)
- AWS S3 (for photo caching)
- Google Maps API
-
Libraries:
-
All libraries are in backend/package.json and can be installed using "npm install" in the backend directory
- Platform: React Native (Expo)
- Languages: JavaScript, JSX
- Runtime: Node.js v18+, Expo CLI
- Libraries:
- All libraries are in backend/package.json and can be installed using "npm install" in the root directory
This project includes a Node.js backend and a React Native frontend (using Expo). All necessary code is hosted in the Capstone GitLab repository:
https://capstone.cs.utah.edu/easy-going/easy-going.git
All code and setup instructions are provided below to ensure the project can be fully built and run locally or on the cloud.
Install the following tools on your machine:
- Node.js v18+
- npm
- Expo CLI
- PostgreSQL (or access to Amazon RDS)
- Git
psqlCLI for PostgreSQL interaction
easy-going/
│
├── backend/ ← Node.js + Express backend
│ ├── server.js
│ ├── schema.sql ← PostgreSQL schema
│ └── .env.example
│
├── frontend/ ← React Native frontend via Expo
│ ├── App.js
│ └── ...
│
└── README.md ← This file
-
Launch an Ubuntu EC2 instance and SSH in:
ssh -i ~/.ssh/your-key.pem ubuntu@your-ec2-ip -
Install Node.js, npm, and git:
sudo apt update && sudo apt install -y nodejs npm git -
Clone the project:
git clone https://capstone.cs.utah.edu/easy-going/easy-going.git cd easy-going/backend -
Set up
.envwith credentials for Firebase, Google Maps, PostgreSQL, and AWS:DB_HOST=... DB_USER=... DB_PASSWORD=... DB_NAME=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... S3_BUCKET=...
-
Install dependencies and start the backend server:
npm install node server.js
Optionally use
pm2orscreento keep the server running in the background.
-
Create a PostgreSQL instance on Amazon RDS:
- Choose PostgreSQL engine
- Enable public access
- Add your EC2 instance's security group to the RDS inbound rules
-
Connect to the RDS instance from EC2:
psql -h your-rds-endpoint -U postgres -d postgres
-
Seed the database with the schema:
psql -h your-rds-endpoint -U postgres -d postgres -f backend/schema.sql
This will create all necessary tables (
users,trips,history,cached_photos) for the backend.
-
Go to AWS S3 Console and create a new bucket:
- Name it:
easygoing-photo-cache - Region: Match your EC2 region (e.g.,
us-east-2) - Block all public access (recommended)
- Enable versioning (optional)
- Name it:
-
Ensure your IAM user or EC2 instance role has these permissions:
s3:PutObjects3:GetObjects3:ListBucket
Example policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] } -
Once configured, the backend will cache Google Maps photo references to this bucket automatically.
After completing the EC2, RDS, and S3 setup:
- Your backend server should be live
- The database will be seeded and ready
- Image caching via S3 will reduce Google Maps API calls
- API routes are documented via Swagger at
/api-docs
MIT License — see LICENSE.md for details.