A modern, type-safe web application for generating beautiful minimalist printable calendars and habit trackers. Built with Next.js, TypeScript, and Tailwind CSS.
- ποΈ 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
This project is a Turborepo monorepo with the following structure:
apps/frontend: Next.js web application for calendar preview and generationapps/generator: Puppeteer-based PDF generation serviceapps/robot: Placeholder for future automation tasks
packages/config: Shared configuration for locales, themes, and calendar settings
- Node.js 14+
- Yarn 1.22+
# 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 devCreate a .env.local file in the root directory:
# Required
SITE_URL=https://useminimal.comyarn 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)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 coverageGenerator (apps/generator):
cd apps/generator
yarn generate # Generate calendar PDFsThe 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:coverageThe 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
- Frontend serves calendar previews at
http://localhost:3000 - Generator uses Puppeteer to capture calendar renders
- PDFs are generated for all supported languages and formats
- Output is organized and zipped for distribution
- Formats: A4, A5
- Orientations: Portrait, Landscape
- Types: Monthly calendars, Yearly overviews, Habit trackers
- Languages: 32 locales with proper date formatting
- Next.js 16 - React framework
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Radix UI - Accessible component primitives
- Luxon - Date manipulation and internationalization
- Turborepo - Monorepo build system
- ESLint - Code linting
- Prettier - Code formatting
- Jest - Testing framework
- React Testing Library - Component testing
- Puppeteer - PDF generation
- Vercel - Deployment platform
- Vercel Analytics - Performance monitoring
βββ 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
- Add locale configuration to
packages/config/config.ts - Test calendar rendering in all formats
- Update language list in README
- Create theme component in
apps/frontend/src/components/calendar/themes/ - Add theme to configuration
- Update theme lookup in print page
The application is optimized for Vercel deployment:
# Deploy to Vercel
vercel
# Or connect GitHub repository for automatic deployments# Build all apps
yarn build
# Deploy frontend app from apps/frontend/.next
# Deploy generator as serverless function or container- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- TypeScript: Strict mode enabled, no
anytypes - 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
- 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
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for the minimalist community