Skip to content

BartoszJarocki/minimal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Minimal - Minimalist Calendar Generator

A modern, type-safe web application for generating beautiful minimalist printable calendars and habit trackers. Built with Next.js, TypeScript, and Tailwind CSS.

✨ Features

  • πŸ—“οΈ Minimalist Calendars: Generate clean, printable calendars for any year
  • πŸ“Š Habit Trackers: Create customizable habit tracking sheets
  • 🌍 Multi-language Support: Available in 32 languages
  • πŸ“„ Multiple Formats: A4, A5, and Letter sizes in portrait/landscape
  • 🎨 Beautiful Design: Clean, minimal aesthetic optimized for printing
  • β™Ώ Accessible: ARIA labels, keyboard navigation, and screen reader support
  • ⚑ Performance: Optimized with React.memo, error boundaries, and proper TypeScript

πŸ—οΈ Architecture

This project is a Turborepo monorepo with the following structure:

Apps

  • apps/frontend: Next.js web application for calendar preview and generation
  • apps/generator: Puppeteer-based PDF generation service
  • apps/robot: Placeholder for future automation tasks

Packages

  • packages/config: Shared configuration for locales, themes, and calendar settings

πŸš€ Quick Start

Prerequisites

  • Node.js 14+
  • Yarn 1.22+

Installation

# Clone the repository
git clone <repository-url>
cd minimal

# Install dependencies
yarn install

# Copy environment variables
cp .env.example .env.local

# Start development server
yarn dev

Environment Variables

Create a .env.local file in the root directory:

# Required
SITE_URL=https://useminimal.com

πŸ“¦ Available Scripts

Root Commands

yarn dev          # Start all apps in development mode
yarn build        # Build all apps (includes sitemap generation)
yarn lint         # Lint all apps
yarn format       # Format code with Prettier
yarn test         # Run all tests
yarn test:watch   # Run tests in watch mode
yarn test:coverage # Run tests with coverage report
yarn generate     # Generate calendar PDFs (requires frontend running)

App-specific Commands

Frontend (apps/frontend):

cd apps/frontend
yarn dev          # Start Next.js dev server
yarn build        # Build for production
yarn test         # Run Jest tests
yarn test:watch   # Run tests in watch mode
yarn test:coverage # Run tests with coverage

Generator (apps/generator):

cd apps/generator
yarn generate     # Generate calendar PDFs

πŸ§ͺ Testing

The project includes comprehensive testing setup:

  • Jest for unit testing
  • React Testing Library for component testing
  • Coverage reporting with thresholds
  • Accessibility testing with jest-axe
# Run all tests across the monorepo
yarn test

# Run tests in watch mode
yarn test:watch

# Generate coverage report
yarn test:coverage

🌐 Supported Languages

The application supports 32 languages:

English, French, German, Spanish, Italian, Portuguese, Polish, Latvian, Norwegian, Czech, Ukrainian, Croatian, Slovak, Slovenian, Thai, Danish, Dutch, Finnish, Icelandic, Hungarian, Romanian, Swedish, Turkish, Russian, Korean, Hindi, Greek, Persian, Arabic, Hebrew, Japanese, Chinese

🎨 Calendar Generation

Development Workflow

  1. Frontend serves calendar previews at http://localhost:3000
  2. Generator uses Puppeteer to capture calendar renders
  3. PDFs are generated for all supported languages and formats
  4. Output is organized and zipped for distribution

Supported Outputs

  • Formats: A4, A5
  • Orientations: Portrait, Landscape
  • Types: Monthly calendars, Yearly overviews, Habit trackers
  • Languages: 32 locales with proper date formatting

πŸ› οΈ Technology Stack

Frontend

  • Next.js 16 - React framework
  • TypeScript - Type-safe development
  • Tailwind CSS - Utility-first styling
  • Radix UI - Accessible component primitives
  • Luxon - Date manipulation and internationalization

Development

  • Turborepo - Monorepo build system
  • ESLint - Code linting
  • Prettier - Code formatting
  • Jest - Testing framework
  • React Testing Library - Component testing

Production

  • Puppeteer - PDF generation
  • Vercel - Deployment platform
  • Vercel Analytics - Performance monitoring

πŸ“ Project Structure

β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ frontend/           # Next.js web application
β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”œβ”€β”€ components/ # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ pages/      # Next.js pages
β”‚   β”‚   β”‚   β”œβ”€β”€ lib/        # Utilities and configuration
β”‚   β”‚   β”‚   └── styles/     # Global styles
β”‚   β”‚   β”œβ”€β”€ __tests__/      # Test files
β”‚   β”‚   └── public/         # Static assets
β”‚   β”œβ”€β”€ generator/          # PDF generation service
β”‚   └── robot/              # Future automation
β”œβ”€β”€ packages/
β”‚   └── config/             # Shared configuration
β”œβ”€β”€ .env.example            # Environment variables template
β”œβ”€β”€ turbo.json              # Turborepo configuration
└── CLAUDE.md               # AI assistant context

πŸ”§ Configuration

Adding New Languages

  1. Add locale configuration to packages/config/config.ts
  2. Test calendar rendering in all formats
  3. Update language list in README

Adding New Themes

  1. Create theme component in apps/frontend/src/components/calendar/themes/
  2. Add theme to configuration
  3. Update theme lookup in print page

πŸš€ Deployment

Vercel (Recommended)

The application is optimized for Vercel deployment:

# Deploy to Vercel
vercel

# Or connect GitHub repository for automatic deployments

Manual Deployment

# Build all apps
yarn build

# Deploy frontend app from apps/frontend/.next
# Deploy generator as serverless function or container

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • TypeScript: Strict mode enabled, no any types
  • Testing: Write tests for new components and utilities
  • Accessibility: Include ARIA labels and keyboard navigation
  • Performance: Use React.memo and useMemo for expensive operations
  • Security: No hardcoded secrets, validate all inputs

πŸ“Š Performance

  • Lighthouse Score: 95+ across all metrics
  • Core Web Vitals: Optimized for LCP, FID, and CLS
  • Bundle Size: Analyzed and optimized with tree shaking
  • Error Handling: Comprehensive error boundaries

πŸ”’ Security

  • Input Validation: All user inputs validated
  • XSS Prevention: Proper escaping and sanitization
  • CSRF Protection: Built-in Next.js protection
  • Environment Variables: Secrets properly managed
  • Dependencies: Regularly updated and audited

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❀️ for the minimalist community

About

Minimal - minimalist calendars and habit trackers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •