A full-stack MERN application that helps users track and manage their job applications effectively.
Job Diary Pro is a comprehensive job application tracking system that allows users to:
- Track job applications with detailed information
- Search and filter jobs by various criteria
- Visualize application statistics
- Manage their professional profile
- Store company information with automatic logo detection
This application streamlines the job search process by providing a centralized platform to monitor application status, upcoming interviews, and job search progress.
- Secure registration and login system
- JWT-based authentication with HTTP-only cookies
- Role-based access control (admin/user)
- Demo account for testing features
- Create, edit, and delete job applications
- Automatic company information retrieval from URL
- Track application status (pending, interview, declined)
- Categorize by job type (full-time, part-time, internship)
- Record work model (remote, hybrid, onsite)
- Advanced search functionality for jobs
- Filter by status, type, and work model
- Sort by various criteria (newest, oldest, alphabetical)
- Pagination for better user experience
- Visual statistics dashboard
- Distribution of application statuses
- Job application trends
- Personalized user profiles
- Profile image upload via Amazon S3
- Dark/light mode toggle
- Responsive design for all devices
- React 19 with TypeScript
- Styled Components for styling
- React Router v7 for routing and data actions
- TanStack Query (React Query) for data fetching and caching
- Recharts for data visualization
- React Icons for UI elements
- Context API for global state management
- Axios for HTTP requests
- Vite for build tooling
- Express.js for REST API development
- MongoDB with Mongoose for database
- JWT for authentication
- bcryptjs for password hashing
- Express Validator for data validation
- Multer for file upload handling
- AWS SDK for S3 integration
- TypeScript for type safety
- Vercel for hosting frontend and serverless functions
├── client/ # Frontend React application
│ ├── public/ # Static files
│ └── src/
│ ├── api/ # API services and queries
│ ├── assets/ # Images and static assets
│ ├── components/ # Reusable components
│ ├── constants/ # Application constants
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ ├── providers/ # Context providers
│ ├── types/ # TypeScript types
│ └── utils/ # Utility functions
│
└── server/ # Backend Express application
└── src/
├── controllers/ # Request handlers
├── errors/ # Custom error classes
├── middleware/ # Express middleware
├── models/ # Mongoose models
├── routes/ # API routes
├── types/ # TypeScript types
└── utils/ # Utility functions
- Node.js (v16+)
- pnpm
- MongoDB
-
Clone the repository
git clone https://github.com/halilibrahimcelik/job-diary-pro.git cd job-tacking-app
-
Install dependencies
# Install server dependencies cd server pnpm install # Install client dependencies cd ../client pnpm install
-
Environment variables
Create
.env
files in both server and client directories:Server .env
PORT=8080 MONGO_URL=your_mongodb_connection_string JWT_SECRET=your_jwt_secret JWT_LIFETIME=1d BUCKET_NAME=your_s3_bucket_name BUCKET_REGION=your_s3_region CLIENT_URL=http://localhost:3000
Client .env
VITE_API_URL=http://localhost:8080/api/v1 VITE_NODE_ENV=development
-
Start development servers
# Run server cd server pnpm dev # Run client in another terminal cd client pnpm dev # Or run both concurrently from server directory cd server pnpm server:dev
- HTTP-only cookies for JWT storage
- Password hashing with bcrypt
- Input validation and sanitization
- Protected routes with role-based access
- CORS configuration
- Rate limiting to prevent abuse
The application is fully responsive and optimized for:
- Desktop browsers
- Tablets
- Mobile devices
- Building a full-stack TypeScript application
- Implementing secure authentication flows
- Working with MongoDB and Mongoose
- Creating reusable React components
- Managing application state with Context API
- Using React Router data actions for server state
- Integrating with cloud services (AWS S3)
- Deploying a MERN application on Vercel
- Email notifications for application status changes
- Calendar integration for interview scheduling
- Document storage for resumes and cover letters
- Networking contact management
- Job application insights and recommendations
- Social sharing functionality
MIT
Feel free to reach out with any questions or feedback!