Skip to content

Self-Journal/self-journal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

69 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SelfJournal

Your personal productivity companion that adapts to your life

A modern, privacy-first Bullet Journal Progressive Web App that combines the proven Bullet Journal methodology with smart features like recurring tasks, mood tracking, and productivity insights.

Self Journal Dashboard

License GitHub stars GitHub issues

โœจ Features

  • ๐Ÿ“ True Bullet Journal Methodology - Rapid logging with bullets, tasks, events, and notes
  • ๐Ÿ“ฑ Mobile-First PWA - Works offline, installable on any device
  • ๐Ÿ”„ Smart Recurring Tasks - Daily, weekly, monthly, and yearly task patterns
  • ๐Ÿ˜Š Mood Tracking Timeline - Log multiple moods per day with contextual notes
  • ๐Ÿ“Š Productivity Insights - Activity heatmaps and performance analytics
  • ๐Ÿ“š Collections - Organize related entries and tasks
  • ๐ŸŽฏ Multi-View Navigation - Daily, Weekly, Monthly, and Index views
  • ๐Ÿ”’ Privacy-First - All data stored locally in SQLite
  • ๐ŸŽจ Beautiful Design - Clean, minimal interface with dark mode
  • ๐Ÿ’ฐ Free & Open Source - MIT licensed

๐Ÿš€ Quick Start

Deploy to Cloud

Deploy on Railway

Railway is the recommended cloud platform as it natively supports SQLite with persistent volumes.

Docker (Recommended for Self-Hosting)

# Clone the repository
git clone https://github.com/Self-Journal/self-journal.git
cd selfjournal

# Copy environment variables
cp .env.example .env

# Edit .env and set your NEXTAUTH_SECRET
# Generate one with: openssl rand -base64 32

# Start with Docker Compose
docker-compose up -d

# Access at http://localhost:3000

Local Development

# Clone the repository
git clone https://github.com/Self-Journal/self-journal.git
cd selfjournal

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env and add your NEXTAUTH_SECRET

# Start development server
npm run dev

# Access at http://localhost:3000

๐ŸŽญ Demo Mode

Want to run a public demo instance? Enable demo mode for automatic login and sample data:

# Docker Compose
DEMO_MODE=true docker-compose up -d

# Or add to your .env file
DEMO_MODE=true

When DEMO_MODE=true:

  • โœ… Auto-login - Users are automatically logged in as a demo user
  • โœ… Sample data - Pre-populated with tasks, collections, and mood entries
  • โœ… Demo banner - Fixed footer banner indicates this is a demo instance
  • โœ… Auto-seed - Demo user is created automatically on first startup

Demo credentials (if manual login is needed):

  • Username: demo
  • Password: demo123

See DEMO_MODE.md for detailed documentation.

๐Ÿ“ฆ Deployment Options

Railway (Recommended for Cloud)

  1. Click the "Deploy on Railway" button above
  2. Railway will auto-generate NEXTAUTH_SECRET
  3. Set NEXTAUTH_URL to your Railway URL
  4. Railway automatically creates a persistent volume for your SQLite database

Why Railway?

  • โœ… Native SQLite support with persistent volumes
  • โœ… Automatic SSL certificates
  • โœ… Free tier available ($5 credit/month)
  • โœ… Zero configuration needed
  • โœ… Perfect for production use

Docker

Using Docker Compose (Recommended):

docker-compose up -d

Manual Docker:

# Build the image
docker build -t selfjournal .

# Run the container
docker run -d \
  -p 3000:3000 \
  -e NEXTAUTH_SECRET="your-secret-here" \
  -e NEXTAUTH_URL="https://yourdomain.com" \
  -v selfjournal-data:/app/data \
  --name selfjournal \
  selfjournal

Self-Hosted (VPS)

# Install Node.js 20+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# Clone and setup
git clone https://github.com/Self-Journal/self-journal.git
cd selfjournal
npm install
npm run build

# Set up environment
cp .env.example .env
# Edit .env with your values

# Start with PM2 (production process manager)
npm install -g pm2
pm2 start npm --name selfjournal -- start
pm2 save
pm2 startup

๐Ÿ”ง Environment Variables

Variable Description Required Default
NEXTAUTH_SECRET Secret key for authentication (generate with openssl rand -base64 32) โœ… Yes -
NEXTAUTH_URL Canonical URL of your deployment โœ… Yes http://localhost:3000
NODE_ENV Environment mode No development

๐Ÿ“– Usage Guide

Getting Started

  1. Register - Create your account (data stored locally)
  2. Setup - Choose your journaling preferences
  3. Start Logging - Use the Daily view to track tasks and moods

Bullet Journal Basics

  • โ€ข Bullet - Open task
  • ร— Complete - Finished task
  • > Migrated - Moved to another day
  • < Scheduled - Planned for future
  • - Note - General note
  • โ—‹ Event - Special event

Views

  • Daily - Focus on today's tasks and mood
  • Weekly - Plan and review your week
  • Monthly - Big picture overview
  • Index - Quick navigation and search
  • Collections - Organize related tasks and notes

Recurring Tasks

  1. Create a task in Daily view
  2. Tap the task menu (โ‹ฎ)
  3. Select "Make Recurring"
  4. Choose pattern: Daily, Weekly, Monthly, or Yearly
  5. Task automatically appears on future dates

Mood Tracking

  1. Tap a mood emoji in Daily view
  2. Optionally add a note (predefined or custom)
  3. Track multiple moods throughout the day
  4. View your mood timeline and patterns

๐Ÿ›  Tech Stack

  • Framework: Next.js 15 (App Router)
  • Language: TypeScript
  • Database: SQLite (better-sqlite3)
  • Auth: NextAuth.js
  • Styling: Tailwind CSS
  • Components: shadcn/ui
  • PWA: next-pwa
  • Deployment: Docker, Vercel, Railway

๐Ÿ“Š Database Schema

SelfJournal uses SQLite for local-first data storage:

  • users - User accounts
  • entries - Daily/Weekly/Monthly journal entries
  • tasks - Tasks with bullet symbols and recurrence
  • mood_entries - Multiple mood logs per day
  • collections - Custom collections
  • collection_items - Items within collections

See lib/db.ts for complete schema.

๐Ÿค Contributing

Contributions are welcome! Please read our Contributing Guide first.

Development Setup

# Fork and clone
git clone https://github.com/YOUR_USERNAME/selfjournal.git

# Install dependencies
npm install

# Create feature branch
git checkout -b feature/amazing-feature

# Make changes and test
npm run dev

# Commit with conventional commits
git commit -m "feat: add amazing feature"

# Push and create PR
git push origin feature/amazing-feature

๐Ÿ“ Roadmap

See FUTURE_FEATURES.md for planned features.

Short-term:

  • Cloud sync (optional)
  • Native mobile apps (iOS/Android)
  • Import/Export (JSON, Markdown)
  • Templates gallery
  • Habit tracking

Long-term:

  • Collaboration features
  • AI-powered insights
  • Integration ecosystem
  • Multi-language support

๐Ÿ“ธ Screenshots

Dashboard

Dashboard with productivity insights

Views

Click to see all views

Daily View Track your daily tasks, events, and mood

Weekly View Plan and review your week at a glance

Monthly View Big picture overview of your month

Collections Organize related tasks and notes in custom collections

๐Ÿ“„ License

MIT License - see LICENSE for details.

๐Ÿ™ Acknowledgments

๐Ÿ’ฌ Community & Support

โญ Star History

If you find SelfJournal useful, please consider giving it a star! It helps others discover the project.


Made with โค๏ธ for mindful productivity

About

A modern, privacy-first Bullet Journal PWA with mood tracking and productivity insights

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published