CommonGround is a full-stack social event planning platform designed to eliminate friction when organizing group activities. By comparing group members' budgets, travel preferences, and activity interests, CommonGround helps groups discover shared interests and vote on proposed event itineraries effortlessly.
- User Authentication: Simple authentication and profile state management.
- Dynamic Profile Management: Dedicated dashboard displaying user details, city, preferences, and active group memberships.
- Group Creation & Management: Users can establish public or private groups and automatically acquire admin capabilities.
- Relational Data Architecture: Full SQL schema supporting groups, memberships, invitations, place categories, user preferences, events, proposals, and voting.
- Framework: React (Vite)
- Styling: Tailwind CSS
- Icons: React Icons (
react-icons) - HTTP Client: Axios
- Routing: React Router DOM
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL
- Database Client:
node-postgres(pg)
The application relies on a structured PostgreSQL schema consisting of:
users: Stores member credentials and profile details.place_types: Categorizes location types (Restaurants, Museums, Parks).user_preferences: Maps user budget and transit preferences per place type.groups&group_members: Manages group privacy, roles (ADMIN,MEMBER), and participation.events,proposals&proposal_votes: Handles group event suggestions and voting status (YES,NO,MAYBE).
- Node.js (v18+)
- PostgreSQL installed and running locally or via Docker
docker compose up -d- open
localhost:5050 - enter user and password
- create database and open query tool, copy & paste seed data
- at commonGround
npm install
npm run dev
- at commonGround/cg-front
npm install
npm run dev
http://localhost:1573
POST /api/v1/users/login — Authenticates user credentials.
GET /api/v1/users/:id/profile — Loads user metadata and category preferences.
GET /api/v1/users/:id/groups — Retrieves groups joined/created by the active user.
POST /api/v1/groups — Submits new group creation payloads.
