A personal journalling application built as a hands-on way to learn Ruby and Rails, while also serving as a tool I will genuinely use.
- Implement user authentication (if multiple users are needed)
- Set up database models for entries and trackers
- Implement creation, editing, and deletion of daily journal entries
- Enable rich-text input for journal entries (e.g., ActionText / Trix)
- Automatically timestamp entries and associate with users
- Define trackers (e.g., mood, energy, focus) and associate them with entries
- Implement forms to assign tracker values to each entry
- Display tracker values alongside entries in the journal view
- Validate tracker data (unique per entry, numerical ranges)
- Set up Python microservice or script for AI/ML analysis
- Implement pipeline to analyze entries and extract topics or themes
- Integrate Python AI with Rails (HTTP API, REST, or system calls)
- Display suggested topics or themes next to each entry
- Use AI/ML to predict tracker values based on entry content
- Implement optional auto-fill feature for tracker values
- Allow users to review and adjust AI-generated tracker values
- Create a calendar view for browsing entries by date
- Highlight dates with tracker information (color-coded moods)
- Enable clicking on a date to view or edit the entry
- Aggregate tracker data to calculate trends across entries
- Display global statistics on a dashboard (average mood per week/month, common topics)
- Implement charts or graphs to visualize trends (Chart.js, ApexCharts, etc.)
- Allow filtering of statistics by time range or tracker type
- Implement AI-assisted automatic title generation for entries
- Suggest titles in the editor with user override option
- Choose and integrate a CSS framework (Tailwind, Bootstrap, etc.)
- Apply consistent styling to entries, forms, calendar, and dashboards
- Improve responsiveness for mobile and tablet views
- Add animations or transitions for Turbo Frame updates (optional)
- Write unit and integration tests for entries, trackers, and AI features
- Test Turbo Frames and dynamic updates thoroughly
- Prepare deployment setup (Heroku, Render, or other Rails host)
- Configure environment variables and Python integration in production
- Export journal data to PDF or CSV
- Notifications or reminders for daily journaling
- Sentiment analysis over time with visualizations
- Integration with external calendar apps
- Security & Encryption
- Learn how to securely store user passwords (e.g., password hashing with bcrypt)
- Learn how to restrict access so users can only see their own journal entries
- Learn about encrypting sensitive data in the database
- Learn how to enforce strong password policies
- Learn how to implement session timeout or automatic logout
- Learn Rails techniques to protect against common web vulnerabilities (CSRF, XSS, SQL injection)
- Multiple Users & Authentication
- Learn how to implement user registration and login in Rails
- Learn how to associate data (entries, trackers) with individual users
- Learn how to prevent users from accessing others’ data
- Learn how to use Rails authentication libraries (e.g., Devise) effectively
- Deployment & Hosting
- Learn how to prepare a Rails app for production
- Learn how to configure a production database (PostgreSQL recommended)
- Learn how to deploy a Rails app to a small local server or single-board computer
- Learn how to manage environment variables securely
- Learn how to set up background jobs if needed (Sidekiq/Redis)
- Learn how to enable secure HTTPS access locally or over a network
- Learn strategies for backing up Rails application data
Ruby 3.4.0
Rails 8.1.1