This is a fully customizable, enterprise-grade job application platform that provides a complete solution for managing job postings and candidate applications. Built with modern technologies and best practices, it’s ready for production deployment while remaining easy to customize for your specific needs.
Fullstack-Job-Application/
├── backend/ # Node.js backend
│ ├── config/ # Database configuration
│ │ └── db.js
│ ├── models/ # Mongoose models
│ │ ├── Job.js
│ │ └── Application.js
│ ├── routes/ # API routes
│ │ ├── jobs.js
│ │ └── applications.js
│ ├── __tests__/ # Backend tests
│ ├── .env.example # Environment variables template
│ ├── Dockerfile # Backend Docker configuration
│ ├── jest.config.js # Jest configuration
│ ├── package.json
│ └── server.js # Express server entry point
├── frontend/ # React frontend
│ ├── public/ # Static files
│ │ └── index.html
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── Header.js
│ │ │ ├── Footer.js
│ │ │ ├── JobList.js
│ │ │ ├── JobForm.js
│ │ │ └── ApplicationForm.js
│ │ ├── styles/
│ │ │ └── main.css
│ │ ├── App.js
│ │ ├── config.js # Frontend configuration
│ │ └── index.js
│ ├── .env.example # Environment variables template
│ ├── Dockerfile # Frontend Docker configuration
│ └── package.json
├── docs/ # Documentation
│ └── API.md # API documentation
├── .github/
│ └── workflows/
│ └── ci.yml # CI/CD pipeline
├── docker-compose.yml # Docker Compose configuration
├── package.json # Root package.json for scripts
├── .eslintrc.json # ESLint configuration
├── .prettierrc # Prettier configuration
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
└── README.md
git clone https://github.com/UNC-GDSC/Fullstack-Job-Application.git
cd Fullstack-Job-Application
npm run install:all
cd backend
cp .env.example .env
# Edit .env with your MongoDB connection string
npm run dev
Backend Environment Variables:
PORT=5000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/job_applications_db
COMPANY_NAME=Your Company Name
COMPANY_LOGO_URL=https://example.com/logo.png
ALLOWED_ORIGINS=http://localhost:3000
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
In a new terminal:
cd frontend
cp .env.example .env
# Edit .env if needed
npm start
Frontend Environment Variables:
REACT_APP_API_URL=http://localhost:5000
REACT_APP_COMPANY_NAME=Your Company Name
REACT_APP_COMPANY_LOGO_URL=https://example.com/logo.png
# Start all services (MongoDB, Backend, Frontend)
npm run docker:up
# View logs
npm run docker:logs
# Stop all services
npm run docker:down
Access after Docker deployment:
# Run all tests
npm test
# Backend tests only
npm run test:backend
# Frontend tests only
npm run test:frontend
# Frontend tests with coverage
cd frontend && npm run test:coverage
# Format all code
npm run format
# Check formatting
npm run format:check
# Lint code
npm run lint
# Fix linting issues
npm run lint:fix
From the root directory:
npm run install:all - Install all dependenciesnpm run dev - Run both frontend and backend in development modenpm run dev:backend - Run backend onlynpm run dev:frontend - Run frontend onlynpm test - Run all testsnpm run lint - Lint all codenpm run format - Format all codenpm run docker:up - Start Docker containersnpm run docker:down - Stop Docker containersComprehensive API documentation is available in docs/API.md.
GET /api/jobs - Get all jobs (with pagination and filtering)GET /api/jobs/:id - Get single jobPOST /api/jobs - Create new jobPUT /api/jobs/:id - Update jobDELETE /api/jobs/:id - Delete jobGET /api/applications - Get all applicationsGET /api/applications/:id - Get single applicationPOST /api/applications - Submit applicationDELETE /api/applications/:id - Delete applicationGET /api/health - API health statusUpdate environment variables in .env files:
Backend (backend/.env):
COMPANY_NAME=Acme Corporation
COMPANY_LOGO_URL=https://acme.com/logo.png
Frontend (frontend/.env):
REACT_APP_COMPANY_NAME=Acme Corporation
REACT_APP_COMPANY_LOGO_URL=https://acme.com/logo.png
frontend/src/components/frontend/src/App.jsfrontend/src/styles/main.cssbackend/models/backend/routes/backend/server.jsNODE_ENV=production in backend .envWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
git checkout -b feature/amazing-feature)git commit -m 'feat: add amazing feature')git push origin feature/amazing-feature)cd backend
npm test # Run tests
npm run test:watch # Watch mode
cd frontend
npm test # Run tests
npm run test:watch # Watch mode
npm run test:coverage # Generate coverage report
Note: This application should have authentication/authorization implemented before production use.
MONGO_URI in .envPORT in backend .env# Restart containers
npm run docker:down
npm run docker:up
# View logs
npm run docker:logs
# Rebuild containers
docker-compose up --build
This project is licensed under the MIT License - see the LICENSE file for details.
Created and maintained by the UNC-Chapel Hill Google Developer Student Club (GDSC) team.
| Documentation: API Docs | Contributing Guide |