Back to Projects

noexcuses

A comprehensive productivity and habit tracking application

Visit Site
Next.js 13+
React 19
TypeScript
PostgreSQL
Prisma ORM
Clerk Auth
Tailwind CSS
shadcn/ui
noexcuses application screenshot

Core Architecture & Technical Foundation

Technology Stack
  • Frontend: Next.js 15 (App Router) with React 19
  • Backend: Next.js API Routes serving as RESTful endpoints
  • Database: PostgreSQL accessed via Prisma ORM
  • Authentication: Clerk with middleware protection
  • State Management: React hooks (useState, useCallback) with optimistic updates
  • UI Framework: Tailwind CSS with shadcn/ui components
  • Form Handling: React Hook Form with Zod validation
  • Testing: Jest with React Testing Library
Application Structure
  • App Router Organization: Routes defined in src/app/ following Next.js 13+ conventions
  • API Routes: RESTful endpoints in src/app/api/
  • Component Architecture: Reusable components in src/components/ organized by feature
  • Business Logic: Services in src/services/ handle core functionality
  • Data Models: Prisma schema defines comprehensive data models with relations
  • Type Safety: TypeScript throughout with Zod schemas for validation

Security & Data Protection

Data Encryption

The application implements end-to-end encryption for sensitive data:

  • Field-Level Encryption: Uses AES-256-GCM for encrypting sensitive fields like task descriptions
  • Middleware Integration: API routes use encryption middleware via createApiRouteHandlers
  • Transparent Handling: Automatic encryption/decryption of sensitive fields defined in SENSITIVE_FIELDS
  • Graceful Fallbacks: Handles both encrypted and unencrypted data formats with appropriate logging
Authentication & Authorization
  • Clerk Integration: Robust authentication with middleware protection
  • Protected Routes: Server-side authentication checks via auth()
  • Rate Limiting: Implements API rate limiting with Upstash Redis

Core Features & Implementation

Task Management System
  • Comprehensive Task Model: Supports one-time and recurring tasks with complex recurrence patterns
  • Recurrence Patterns:
    • Daily (with interval, end after count, or end date)
    • Weekly (on specific days of week)
    • Monthly (by date or by position, e.g., "second Tuesday")
    • Yearly (specific date or pattern, e.g., "last Friday in October")
  • Task Properties: Title, description, category, completion status, streaks, due dates
  • Views: Today, upcoming (next 7/30 days), categorized, calendar-based
  • Filtering: By date range, category, completion status
Habit Tracking
  • Habit Definition: Title, description, target completions, category assignment
  • Frequency Settings: Daily, weekly (specific days), monthly
  • Progress Tracking: Completion status, daily streaks, longest streak
  • Multiple Completions: Support for habits with multiple daily targets
  • UI Components: Interactive habit cards with drag-and-drop reordering
Categorization System
  • Category Properties: Name, color, icon, description, priority, order
  • Visual Differentiation: Color-coding throughout the UI
  • Organization: Categories applied to both habits and tasks
  • Statistics: Category-level analytics and completion rates
Analytics & Visualizations
  • Dashboard: Overview with key metrics and visualizations
  • Progress Tracking: Visual representation of streaks and completion rates
  • Calendar View: Heat map style display of activity patterns
  • Contribution Tracking: GitHub-style activity visualization
User Preferences & Settings
  • Settings Storage: User preferences stored and synced
  • UI Customization: Theme settings (light/dark mode)
  • Personalization: User-specific dashboard configuration
  • Unit Conversion: Weight/height unit preferences

Future Development Potential

Feature Expansion Opportunities
  • Social Integration: Sharing and accountability features
  • Advanced Analytics: More in-depth performance metrics and insights
  • Integration Capabilities: Calendar sync, third-party service connections
  • Mobile App: Potential expansion to native mobile applications