Skip to content

hackadan/journalling-app

Repository files navigation

Journalling App

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.


Broad Plan

  • 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 Version

Ruby 3.4.0
Rails 8.1.1

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors