Study Session Logger
A beautiful and modern web application to track and analyze your study sessions. Built with Express.js, Node.js, EJS templating, and JavaScript.
Features
- 🔐 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
Screenshots
Login Page
- Secure authentication with username and password
- User registration functionality
- Modern, clean design
Home Page
- 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
Statistics Page
- Interactive doughnut chart showing study time by subject
- Detailed subject breakdown with session counts and averages
- Recent sessions list
- Comprehensive analytics
Installation
Clone or download the project
git clone <https://github.com/DevOlabode/study-session-logger> cd study-session-loggerInstall dependencies
npm installStart the application
npm start # or for development with auto-restart: npm run devOpen your browser Navigate to
http://localhost:3000Default Login
- Username:
admin - Password:
admin123
- Username:
Usage
Authentication
- 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
Using the Study Timer
- 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
Adding a Study 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
Managing Sessions
- 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
Viewing Statistics
- 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
Technology Stack
- 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
Project Structure
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
API Endpoints
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)
Data Structure
Study Sessions
{
"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"
}
Users
{
"username": "user123",
"password": "hashed-password",
"createdAt": "2024-01-15T10:30:00.000Z"
}
Features in Detail
Authentication System
- Secure password hashing with bcrypt
- Session-based authentication
- User registration and login
- Protected routes
Study Timer
- Real-time countdown display
- Start/stop functionality
- Automatic session timing
- Integration with session logging
Notifications
- Desktop notifications when sessions end
- Browser notification support
- Custom notification messages
- Sound alerts
Session Management
- Active and completed session status
- Start and end time tracking
- Session completion workflow
- User-specific sessions
Customization
Adding New Features
- 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
Styling
- The app uses a modern gradient design
- Colors can be easily modified in the CSS
- Responsive design ensures it works on all devices
Security Notes
- 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
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
This project is open source and available under the MIT License.
Future Enhancements
- [ ] 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
Support
If you encounter any issues or have questions, please open an issue on the repository or contact the maintainers.
Happy Studying! 📚✨
Log in or sign up for Devpost to join the conversation.