Skip to content

Serenique is a personal life-tracking system designed to help you record meaningful moments, track tasks, build habits, and manage reminders with clarity and calmness. Inspire mindful living through minimal, clean, and rhythm-like workflows.

License

Notifications You must be signed in to change notification settings

zeroicey/serenique

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serenique

中文文档

A personal productivity application for managing habits, tasks, and moments - helping you build a better life through mindful tracking.

Features

Habit Tracking

  • Create and manage both positive (good) and negative (bad) habits
  • Daily check-in with notes and timestamps
  • Set challenging goals with flexible comparison types (at least, at most, exactly)
  • Track progress with detailed history and statistics

Moment Journaling

  • Capture life moments with rich text content
  • Attach media files (images, videos) with preview support
  • Comment on moments for reflection and notes
  • Infinite scroll for browsing historical entries

Task Management

  • Organize tasks into groups (Today, Scheduled, etc.)
  • Set deadlines and reminders
  • Track task completion status
  • Quick task creation and management

User Management

  • Secure JWT-based authentication
  • Profile customization
  • SMTP configuration for notifications

Tech Stack

Frontend

  • Framework: React 19 with TypeScript
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • State Management: Zustand + TanStack React Query
  • Routing: React Router 7
  • UI Components: Radix UI primitives
  • PWA Support: vite-plugin-pwa

Backend

  • Framework: Spring Boot 3.5.7
  • Language: Java 21
  • Database: PostgreSQL
  • Authentication: JWT
  • File Storage: MinIO
  • Database Migration: Flyway

Project Structure

serenique/
├── apps/
│   ├── api/                    # Backend Spring Boot application
│   │   ├── src/main/java/
│   │   │   └── cc/serenique/api/
│   │   │       ├── common/     # Shared services (Email, MinIO)
│   │   │       ├── config/     # Configuration classes
│   │   │       ├── exception/  # Global exception handling
│   │   │       ├── modules/    # Feature modules
│   │   │       │   ├── habit/  # Habit tracking
│   │   │       │   ├── moment/ # Moment journaling
│   │   │       │   ├── task/   # Task management
│   │   │       │   └── user/   # User management
│   │   │       ├── response/   # API response wrappers
│   │   │       └── security/   # JWT authentication
│   │   └── src/main/resources/
│   │       └── db/migration/   # Flyway SQL migrations
│   └── web/                    # Frontend React application
│       └── src/
│           ├── api/            # API client functions
│           ├── components/     # React components
│           │   ├── habit/      # Habit feature components
│           │   ├── moments/    # Moment feature components
│           │   ├── task/       # Task feature components
│           │   └── ui/         # Shared UI components
│           ├── hooks/          # Custom React hooks
│           ├── lib/            # Utility functions
│           ├── pages/          # Page components
│           ├── providers/      # Context providers
│           ├── stores/         # Zustand stores
│           └── types/          # TypeScript type definitions
└── docs/                       # Documentation

Getting Started

Prerequisites

  • Java 21+
  • Node.js 18+ (or Bun)
  • PostgreSQL
  • MinIO (for file storage)

Backend Setup

  1. Navigate to the API directory:

    cd apps/api
  2. Configure application.properties with your database and MinIO settings

  3. Run the application:

    ./mvnw spring-boot:run

Frontend Setup

  1. Navigate to the web directory:

    cd apps/web
  2. Install dependencies:

    npm install
    # or
    bun install
  3. Start the development server:

    npm run dev
    # or
    bun dev
  4. Open http://localhost:5173 in your browser

Architecture Overview

graph TD
subgraph Frontend
UI[User Interface]
Components[React Components]
Hooks[Custom Hooks]
API[API Clients]
end
subgraph Backend
Controller[REST Controllers]
Service[Business Logic]
Repository[Data Access]
Database[(PostgreSQL)]
end
UI --> Components
Components --> Hooks
Hooks --> API
API --> Controller
Controller --> Service
Service --> Repository
Repository --> Database
Auth[JWT Authentication] --> Controller
Minio[(MinIO)] --> Service
Flyway[Flyway Migrations] --> Database
Loading

License

This project is licensed under a Modified MIT License. Usage, modification, or distribution requires written authorization from the copyright holder.

See the LICENSE file for details.

About

Serenique is a personal life-tracking system designed to help you record meaningful moments, track tasks, build habits, and manage reminders with clarity and calmness. Inspire mindful living through minimal, clean, and rhythm-like workflows.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published