A web-based application for college advisors to manage student college applications, track deadlines, and generate reports.
This application uses Docker containers for isolation and easy deployment:
- db - PostgreSQL 16 database
- backend - Node.js/Express REST API
- frontend - React + Vite + Tailwind CSS
- crawler - Automated deadline crawler service
- Docker Desktop installed and running
- Git (for cloning the repository)
- Clone the repository:
git clone <repository-url>
cd commonapp- Start all services:
npm run docker:up
# or
docker-compose up --build- Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Database: localhost:5432
# Start all containers
npm run docker:up
# Stop all containers
npm run docker:down
# View logs
npm run docker:logs
# Reset database and restart
npm run docker:reset
# Run backend tests
cd backend && npm test
# Run frontend tests
cd frontend && npm test- Add, edit, and delete student profiles
- Track graduation year and notes
- View all applications per student
- Search students by name or email
- Pre-seeded with 212 US colleges (Top 200 from US News rankings)
- Manage admission deadlines per round (ED, ED2, EA, REA, RD, Rolling)
- Track deadline sources and confirmations
- Search colleges by name or location
- Link students to colleges with specific rounds
- Smart round selection based on college's available deadline data
- Track application status (Planned → Submitted → Admitted/Rejected)
- View deadline countdown
- Shows deadline dates in round dropdown for informed decisions
- Overview statistics (total students, applications, outcomes)
- Upcoming deadlines widget
- Filter by cycle and time window
- Built-in glossary explaining admission round types (ED, ED2, EA, REA, RD, Rolling)
- Application status definitions
- Accessible from sidebar for quick reference
- Automated PDF import from Common App Requirements Grid
- Parses deadline data for 189+ colleges
- Scheduled weekly runs
- Manual trigger available
- Change detection and logging
- Crawler management and logs
- Data export (CSV/JSON)
- System settings
commonapp/
├── docker-compose.yml # Container orchestration
├── package.json # Root scripts
├── db/
│ └── init/ # Database initialization scripts
│ ├── 01_schema.sql # PostgreSQL schema
│ └── 02_seed_colleges.sql
├── backend/ # Express API
│ ├── Dockerfile
│ └── src/
│ ├── index.ts
│ └── routes/
├── frontend/ # React SPA
│ ├── Dockerfile
│ └── src/
│ ├── api/
│ ├── components/
│ ├── context/
│ └── pages/
└── crawler/ # Crawler service
├── Dockerfile
└── src/
GET /api/students- List studentsPOST /api/students- Create studentGET /api/students/:id- Get studentPUT /api/students/:id- Update studentDELETE /api/students/:id- Delete student
GET /api/colleges- List collegesGET /api/colleges/:id- Get college with roundsPUT /api/colleges/:id- Update collegePOST /api/colleges/:id/rounds- Add deadline roundPUT /api/colleges/:id/rounds/:roundId- Update roundDELETE /api/colleges/:id/rounds/:roundId- Delete round
GET /api/applications- List applications (with filters)POST /api/applications- Create applicationPUT /api/applications/:id- Update applicationDELETE /api/applications/:id- Delete application
GET /api/dashboard/stats- Get statisticsGET /api/dashboard/upcoming-deadlines- Get upcoming deadlines
GET /api/settings- Get system settingsPUT /api/settings- Update settingsGET /api/settings/export- Export all data
POST /api/crawler/run- Trigger crawlerGET /api/crawler/status- Get crawler statusGET /api/crawler/logs- Get crawl history
For development with hot reload, the docker-compose mounts source directories:
- Backend changes: Automatically restarted with ts-node-dev
- Frontend changes: Vite HMR
The system automatically determines the current admission cycle:
- September through December: Current year to next year (e.g., 2025-2026)
- January through August: Previous year to current year
Entry year is the second year of the cycle (e.g., 2025-2026 means Fall 2026 entry).
MIT