A beautiful and modern web application to track and analyze your study sessions. Built with Express.js, Node.js, EJS templating, and JavaScript.
- 🔐 User Authentication: Secure login and registration system
- ⏱️ Study Timer: Built-in countdown timer with start/stop functionality
- 🔔 Session Notifications: Desktop notifications when study sessions end
- 📝 Log Study Sessions: Add study sessions with subject, duration, date, and optional notes
- 📊 Visual Statistics: View detailed analytics with interactive charts
- 🎨 Modern UI: Beautiful, responsive design with gradient backgrounds and smooth animations
- 📱 Mobile Friendly: Optimized for all device sizes
- 🗑️ Session Management: Delete individual study sessions and mark them as completed
- 📈 Progress Tracking: Monitor your learning progress over time
- ⏰ Start/End Times: Track exact start and end times for each session
- Secure authentication with username and password
- User registration functionality
- Modern, clean design
- Interactive study timer with countdown
- Add new study sessions with a clean form
- View recent sessions with status indicators
- Quick statistics overview
- Responsive design for all devices
- Interactive doughnut chart showing study time by subject
- Detailed subject breakdown with session counts and averages
- Recent sessions list
- Comprehensive analytics
-
Clone or download the project
git clone <https://github.com/DevOlabode/study-session-logger> cd study-session-logger
-
Install dependencies
npm install
-
Start the application
npm start # or for development with auto-restart: npm run dev -
Open your browser Navigate to
http://localhost:3000 -
Default Login
- Username:
admin - Password:
admin123
- Username:
- Login: Use the default credentials or register a new account
- Register: Create a new account with username and password
- Logout: Click the logout button to securely end your session
- Start Timer: Click "Start Session" to begin timing your study session
- Monitor Progress: Watch the countdown timer in real-time
- Stop Timer: Click "Stop Session" to end the timer
- Save Session: The timer data will be automatically included when you save a session
- Fill out the form on the home page:
- Subject: Enter the subject you studied (e.g., Mathematics, Physics)
- Duration: Enter the study time in minutes
- Date: Select the date (defaults to today)
- Notes: Optional notes about what you studied
- Click "Save Session" to add it to your log
- The session will be marked as "active" and you can complete it later
- Complete Session: Click the "Complete" button to mark a session as finished
- Delete Session: Click the trash icon to delete a session
- View Details: See start/end times and session status
- Click on "Statistics" in the navigation
- View your study analytics including:
- Total sessions and time
- Study time breakdown by subject
- Average session duration per subject
- Recent session history
- Backend: Node.js with Express.js
- Authentication: Express-session with bcrypt password hashing
- Template Engine: EJS (Embedded JavaScript)
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Styling: Custom CSS with modern design patterns
- Charts: Chart.js for data visualization
- Icons: Font Awesome for beautiful icons
- Data Storage: JSON file-based storage
- Notifications: Node-notifier for desktop notifications
study-session-logger/
├── app.js # Main Express server file
├── package.json # Node.js dependencies and scripts
├── README.md # Project documentation
├── views/ # EJS template files
│ ├── index.ejs # Home page template
│ ├── stats.ejs # Statistics page template
│ ├── login.ejs # Login page template
│ └── register.ejs # Registration page template
├── public/ # Static assets
│ ├── css/ # Stylesheets
│ └── favicon.ico # Favicon for notifications
└── data/ # Data storage directory
├── sessions.json # Study sessions data file
└── users.json # User authentication data
GET /login- Login pagePOST /login- Authenticate userGET /register- Registration pagePOST /register- Create new user accountGET /logout- Logout userGET /- Home page with session form and list (requires auth)POST /session- Add a new study session (requires auth)POST /session/:id/complete- Mark session as completed (requires auth)DELETE /session/:id- Delete a specific session (requires auth)GET /stats- Statistics page with analytics (requires auth)
{
"id": "unique-timestamp-id",
"subject": "Subject name",
"duration": 30,
"notes": "Optional notes",
"date": "2024-01-15",
"startTime": "2024-01-15T10:30:00.000Z",
"endTime": "2024-01-15T11:00:00.000Z",
"timestamp": "2024-01-15T10:30:00.000Z",
"username": "user123",
"status": "active"
}{
"username": "user123",
"password": "hashed-password",
"createdAt": "2024-01-15T10:30:00.000Z"
}- Secure password hashing with bcrypt
- Session-based authentication
- User registration and login
- Protected routes
- Real-time countdown display
- Start/stop functionality
- Automatic session timing
- Integration with session logging
- Desktop notifications when sessions end
- Browser notification support
- Custom notification messages
- Sound alerts
- Active and completed session status
- Start and end time tracking
- Session completion workflow
- User-specific sessions
- The modular structure makes it easy to add new features
- Routes are organized in
app.js - Templates are in the
views/directory - Styling can be customized in the CSS sections of each template
- The app uses a modern gradient design
- Colors can be easily modified in the CSS
- Responsive design ensures it works on all devices
- Change the session secret in production
- Use HTTPS in production environments
- Consider using a proper database for user data
- Implement rate limiting for login attempts
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
- Export data to CSV/PDF
- Study goals and targets
- Study streak tracking
- Study reminders and scheduling
- Dark mode toggle
- Data backup/restore
- Study session templates
- Progress sharing
- Study group features
If you encounter any issues or have questions, please open an issue on the repository or contact the maintainers.
Happy Studying! 📚✨





