• v1.1.1 3fecd548a4

    v1.1.1
    Node.js CI / CI (push) Successful in 1m46s
    Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m47s
    Stable

    naomi released this 2026-02-23 20:39:27 -08:00 | 19 commits to main since this release

    Changelog

    [1.1.1] - 2026-02-23

    Fixed

    • Base64 cover image validation for books, shows, manga, and music — images were incorrectly rejected due to a URL length check running before data URL detection
    • Audit log no longer flooded by 401 responses on /api/auth/me — these are expected during the token refresh flow
    • Silent page reload on ChunkLoadError — users with cached assets from a previous deployment now get a seamless reload instead of a broken experience
    Downloads
  • v1.1.0 fbfc24ba0d

    v1.1.0
    Node.js CI / CI (push) Failing after 1m25s
    Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m35s
    Stable

    naomi released this 2026-02-20 20:35:45 -08:00 | 22 commits to main since this release

    Changelog

    [1.1.0] - 2026-02-21

    Added

    • Reusable form components for all media types (Game, Book, Music, Show, Manga, Art)
    • Inline editing on all detail pages - edit forms appear directly on the page
    • Integrated full form editing into admin suggestions workflow
    • Auto-scroll to top when clicking edit in list views for better UX
    • Default cover image for all media items when no cover is provided
    • Automatic Discord role assignment for library members on login
    • Comprehensive CLAUDE.md project documentation

    Changed

    • Tiered rate limiting: 500 req/min for authenticated users, unlimited for admin
    • All media types now consistently display cover images with fallback
    • Form component outputs renamed to formSubmit and formCancel to avoid DOM event conflicts

    Fixed

    • Base64 image upload support (increased body limit from 1MB to 10MB)
    • Base64 size calculation and validation logic
    • Data URL regex validation to allow whitespace in base64 strings
    • Error handling for game creation/update (now returns 400 with helpful messages instead of 500)
    • Static asset serving with correct MIME types (was serving images as text/html)

    Technical

    • Updated Fastify body limit to 10MB to accommodate base64-encoded images
    • Improved error responses with proper HTTP status codes
    • Enhanced validation utilities for base64 data URLs
    • Added proper TypeScript types for error responses
    Downloads
  • v1.0.0 8468c4cfdd

    v1.0.0
    Node.js CI / CI (push) Successful in 1m28s
    Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m26s
    Stable

    naomi released this 2026-02-20 02:13:43 -08:00 | 25 commits to main since this release

    Naomi's Library v1.0.0 - Initial Release

    Welcome to the first release of Naomi's Library! A comprehensive personal media tracking platform with social features, achievements, and privacy controls.

    🌟 Core Features

    Media Management

    Track and manage your personal media collection across six categories:

    • Books: Track reading progress, ratings, series, and time spent
    • Games: Monitor gaming sessions with platform tracking and completion status
    • Music: Catalogue albums, singles, and EPs with listening history
    • Art: Document art pieces with artist information and viewing dates
    • Shows: Track TV shows and anime with episode progress
    • Manga: Follow manga series with volume and chapter tracking

    Key Features:

    • Rich metadata support (titles, authors/artists, ratings, notes, tags, links)
    • Cover image support for visual browsing
    • Series tracking (Books and Games)
    • Time tracking across all media types
    • Multiple status states (Want to Try, In Progress, Completed, Retired)
    • Custom date tracking (added, started, completed, finished)

    Social Features

    User Suggestions

    • Submit suggestions for new media additions to the library
    • Rich text formatting support with markdown
    • Approval workflow for library curator review
    • Suggestion status tracking (Pending, Approved, Rejected)

    Likes & Comments

    • Like individual media items to show appreciation
    • Rich HTML comment system with markdown support
    • Comment editing and deletion (own comments only)
    • Admin moderation capabilities

    Achievements System

    60+ achievements across 5 categories:

    • Suggestion Achievements (12): First Steps, Persistent, Acceptance Mastery, Perfect Pitch
    • Like Achievements (18): Enthusiast, Fan, Book Lover, Cinephile, Diverse, Art Appreciator, Gamer, Music Lover, Show Enthusiast, Manga Fan, Completionist, Well-Read, Cultured
    • Comment Achievements (10): Conversationalist, Critic, Insightful, Prolific
    • Engagement Achievements (14): Social Butterfly, Community Builder, Daily Visitor, Consistent, Dedicated, Streak Master
    • Report Achievements (8): Vigilant, Guardian, Sentinel, Protector

    Achievement Features:

    • Five tiers: Bronze, Silver, Gold, Platinum, Diamond
    • Points system (10-500 points per achievement)
    • Progress tracking with visual indicators
    • Real-time achievement unlocking with toast notifications
    • Achievement showcase on user profiles
    • Streak tracking for daily engagement

    Activity Feed

    Track recent community activity:

    • New suggestions submitted
    • Media items liked
    • Comments posted
    • Achievements earned
    • Privacy-respecting (follows user profile visibility settings)
    • Real-time updates with HTML comment rendering

    Leaderboards

    Four competitive categories:

    • Most Achievements: Total achievement points earned
    • Most Comments: Community engagement through discussions
    • Most Likes: Appreciation given to library items
    • Most Suggestions: Contributions to library expansion

    Leaderboard Features:

    • Top 10 rankings per category
    • User profile integration
    • Privacy controls (respects profilePublic setting)
    • Real-time updates

    Content Moderation

    Reporting System

    • Report inappropriate comments with seven reason categories:
      • Inappropriate Content
      • Harassment
      • Spam
      • Impersonation
      • Offensive Name
      • Malicious Links
      • Other
    • Admin-only report review dashboard
    • Four status states: Pending, Reviewed, Dismissed, Action Taken
    • Contextual reporting with entity and comment tracking

    Admin Controls

    • Comment deletion with cascade (removes associated reports)
    • User account management
    • Report resolution workflow
    • Media item management (CRUD operations)

    User Experience

    About Page

    • Project information and purpose
    • Credits and acknowledgments
    • Privacy information
    • Technology stack disclosure

    Responsive Design

    • Mobile-first approach
    • Beautiful gradient background (purple, pink, blue spectrum)
    • Card-based layouts with hover effects
    • Smooth animations and transitions
    • Custom colour scheme (Witch Rose, Witch Moon, Witch Dusk, etc.)

    Navigation

    • Intuitive header with dropdown menu
    • Footer with quick links
    • Entity detail pages for all media types
    • Breadcrumb navigation
    • Toast notifications for user feedback

    Security & Privacy

    Authentication & Authorization

    • Secure username/password authentication with bcrypt hashing
    • JWT-based session management
    • Role-based access control (Admin/User)
    • Profile privacy controls (public/private)

    Security Headers

    • Content Security Policy (CSP) with Angular support
    • HTTP Strict Transport Security (HSTS) with 1-year max age
    • Referrer Policy: strict-origin-when-cross-origin
    • Frame protection: deny
    • Cross-Origin Resource Policy: cross-origin

    Input Validation

    • URL validation (http/https only, blocks dangerous protocols)
    • String length limits across all fields
    • Rating validation (1-10 scale)
    • Slug format validation
    • SQL injection prevention
    • XSS protection through sanitization

    Accessibility (WCAG 2.1 Level AA)

    Keyboard Navigation

    • Skip-to-main-content link (Tab to activate)
    • Full keyboard support for all interactive elements
    • Focus indicators (3px outline) on all focusable elements
    • Modal and dropdown focus trapping
    • Escape key support for closing overlays

    Screen Reader Support

    • Comprehensive ARIA labels and landmarks
    • Descriptive alt text for images
    • Live regions for dynamic content
    • Semantic HTML structure
    • Form labels and error messages

    Visual Accessibility

    • High contrast mode support
    • Prefers-reduced-motion support
    • Sufficient colour contrast ratios
    • Clear focus indicators
    • Responsive text sizing

    🛠️ Technical Stack

    Frontend

    • Framework: Angular 21 with standalone components
    • State Management: Angular Signals
    • Routing: Angular Router with lazy loading
    • Styling: SCSS with custom design system
    • HTTP Client: Angular HttpClient with interceptors
    • Build Tool: Nx monorepo with Angular DevKit

    Backend

    • Framework: Fastify with TypeScript
    • Database: MongoDB with Prisma ORM
    • Authentication: JWT with bcrypt password hashing
    • Validation: Custom validation utilities
    • Security: Helmet.js with CSP
    • CORS: Configured for frontend integration

    Development

    • Monorepo: Nx workspace
    • Language: TypeScript throughout
    • Linting: ESLint with @nhcarrigan/eslint-config
    • Testing: Jest (API) + Vitest (shared-types)
    • E2E: Cypress
    • Version Control: Git

    📊 Statistics

    • Total Tests: 123 (all passing)
    • Security Rating: 9/10
    • Accessibility: WCAG 2.1 Level AA compliant
    • Media Types: 6 categories
    • Achievements: 62 unique achievements
    • Achievement Points: 10-500 per achievement
    • Social Features: Suggestions, Likes, Comments, Reports
    • Code Coverage: Comprehensive validation across all services

    🚀 Getting Started

    Prerequisites

    • Node.js 18+ (managed with nvm)
    • MongoDB instance
    • 1Password CLI (for secrets management)

    Installation

    1. Clone the repository
    2. Install dependencies: pnpm install
    3. Set up MongoDB database
    4. Configure prod.env with 1Password vault references
    5. Generate Prisma client: cd api && pnpm prisma generate
    6. Build the application: pnpm build

    Running

    • Development: op run --env-file=prod.env -- pnpm dev
    • Production: op run --env-file=prod.env -- node dist/apps/api/main.js
    • Tests: pnpm test
    • Linting: pnpm lint

    📝 License

    Naomi's Public License

    👥 Credits

    Development: Hikari (AI Assistant)
    Concept & Direction: Naomi Carrigan
    Collaboration: Built together through pair programming


    🌸 This release represents the culmination of extensive development focused on creating an inclusive, accessible, and secure media tracking platform with rich social features. We hope you enjoy using Naomi's Library! 💜

    Downloads