Fullstack-Job-Application

Job Application Portal

![Node.js](https://img.shields.io/badge/Node.js-20.x-green?logo=node.js) ![React](https://img.shields.io/badge/React-18.x-blue?logo=react) ![MongoDB](https://img.shields.io/badge/MongoDB-7.x-green?logo=mongodb) ![License](https://img.shields.io/badge/license-MIT-blue) ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen) A modern, production-ready job application platform built with the MERN stack (MongoDB, Express, React, Node.js). [Features](#features) • [Tech Stack](#technology-stack) • [Quick Start](#quick-start) • [API Docs](/Fullstack-Job-Application/docs/API.html) • [Contributing](/Fullstack-Job-Application/CONTRIBUTING.md)

Overview

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.

Key Highlights


Features

Core Functionality

Technical Features


Technology Stack

Backend

Frontend

DevOps


Directory Structure

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

Quick Start

Prerequisites

Option 1: Local Development

1. Clone the Repository

git clone https://github.com/UNC-GDSC/Fullstack-Job-Application.git
cd Fullstack-Job-Application

2. Install All Dependencies

npm run install:all

3. Backend Setup

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

4. Frontend Setup

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

5. Access the Application

Option 2: Docker Deployment

# 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:


Development

Running Tests

# 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

Code Quality

# Format all code
npm run format

# Check formatting
npm run format:check

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

Available Scripts

From the root directory:


API Documentation

Comprehensive API documentation is available in docs/API.md.

Quick API Reference

Jobs Endpoints

Applications Endpoints

Health Check


Customization

Branding

Update 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

UI Customization

Backend Customization


Deployment

Environment Setup

  1. Set NODE_ENV=production in backend .env
  2. Configure production MongoDB URI
  3. Set proper CORS origins
  4. Configure secure secrets

Deployment Options


Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Testing

Backend Tests

cd backend
npm test                 # Run tests
npm run test:watch      # Watch mode

Frontend Tests

cd frontend
npm test                # Run tests
npm run test:watch     # Watch mode
npm run test:coverage  # Generate coverage report

Security

Note: This application should have authentication/authorization implemented before production use.


Troubleshooting

MongoDB Connection Issues

Port Conflicts

Docker Issues

# Restart containers
npm run docker:down
npm run docker:up

# View logs
npm run docker:logs

# Rebuild containers
docker-compose up --build

License

This project is licensed under the MIT License - see the LICENSE file for details.


Authors

Created and maintained by the UNC-Chapel Hill Google Developer Student Club (GDSC) team.


Acknowledgments


Support


Made with ❤️ by UNC GDSC [⬆ back to top](#job-application-portal)