A modern job application tracker with AI-powered cover letter generation. Built with React, Node.js, and PostgreSQL.
- Job Management: Track job applications with status updates (wishlist, applied, interview, offer, rejected)
- AI Cover Letter Generation: Generate personalized cover letters using Claude AI
- Resume Manager: Store and manage your global resume
- Smart Filtering: Filter jobs by status and search functionality
- Modern UI: Beautiful, responsive interface built with Tailwind CSS
- Real-time Updates: Instant updates across all components
- Node.js (v18 or higher)
- PostgreSQL database
- Anthropic API key (for AI features)
-
Clone the repository
git clone <repository-url> cd jobnest
-
Set up environment variables
# Copy the example environment file cp .env.example .env # Edit .env with your configuration nano .env
-
Install dependencies
# Install server dependencies cd server npm install # Install client dependencies cd ../client npm install
-
Set up the database
# Create your PostgreSQL database createdb jobnest_db # Run migrations (if available) cd ../server npm run migrate # Seed the database (optional) npm run seed
-
Start the development servers
# Start the backend server (from server directory) npm run dev # Start the frontend (from client directory, in a new terminal) cd ../client npm run dev
-
Open your browser Navigate to
http://localhost:5173to access the application.
Create a .env file in the server directory with the following variables:
# Database
DATABASE_URL=postgresql://username:password@localhost:5432/jobnest_db
# AI Services
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Server
PORT=3001
NODE_ENV=developmentThe application uses PostgreSQL. Make sure you have:
- PostgreSQL installed and running
- A database created for the application
- Proper connection string in your
.envfile
jobnest/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── App.jsx # Main app component
│ │ └── main.jsx # App entry point
│ ├── package.json
│ └── vite.config.js
├── server/ # Node.js backend
│ ├── routes/ # API routes
│ ├── db/ # Database configuration
│ ├── migrations/ # Database migrations
│ ├── server.js # Express server
│ └── package.json
├── README.md
└── .env.example
Server (from server directory):
npm run dev # Start development server
npm run start # Start production server
npm run migrate # Run database migrations
npm run seed # Seed database with sample dataClient (from client directory):
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintThis project uses:
- ESLint for code linting
- Prettier for code formatting
- Tailwind CSS for styling
Run npm run lint to check for code style issues.
# Run tests (when implemented)
npm test
# Run tests in watch mode
npm run test:watch- Set up your production database
- Configure environment variables
- Deploy to your preferred platform (Heroku, Railway, etc.)
- Build the production version:
npm run build - Deploy the
distfolder to your hosting service
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -am 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request