A modern, configurable PDF planner generator designed for digital note-taking apps like GoodNotes, Notability, and Remarkable. Create beautiful, functional planners with intelligent hyperlinks for seamless navigation.
- 🎨 Simple Web UI: Modern, responsive interface for easy configuration
- 📅 Flexible Pages: Year, Quarter, Month, Week, and Daily spreads
- 🔗 Smart Hyperlinks: Navigate between pages with clickable links
- 🎨 Visual Presets: 8 curated color themes (Dracula, Nord, Gruvbox, etc.)
- 🖋️ Customizable: Fonts, colors, paper styles (grid/dot/line/plain)
- Node.js (v14 or higher)
- Typst (for PDF generation)
# Install Typst
brew install typst
# Install Node.js dependencies
npm installnpm startThe web interface will be available at http://localhost:3000
- Open
http://localhost:3000in your browser - Configure your planner settings:
- Timeline: Year, start month, duration
- Pages: Select which spreads to include
- Style: Choose orientation, paper style, colors
- Click Generate PDF
Your planner will be generated in the output/ directory.
- Timeline: Start year (2000-2100), month, duration
- Week Settings: Week start day, weekend type
- Page Selection: Year, Quarter, Month, Week, Daily pages
- Output Format: Portrait/Landscape, paper style, pattern density
- Visual Presets: 8 curated themes or custom colors
- Daily Page: Sidebar options, time format, active hours
- Typography: Primary and secondary fonts with weights
- Colors: Dark, light, and accent colors
- Visual Themes: Dracula, Nord, Gruvbox, Solarized, and more
- Dracula: Dark theme with vibrant purple accents
- Nord: Arctic, north-bluish color palette
- Gruvbox: Retro groove with warm, earthy tones
- Solarized: Precision colors for reduced eye strain
- Monokai: Iconic dark theme with vibrant highlights
- Catppuccin: Soothing pastel theme
- Tokyo Night: Clean dark theme inspired by Tokyo nights
- GitHub: Clean and familiar GitHub aesthetic
PaperMaker/
├── web/ # Web interface
│ ├── index.html # Main UI
│ ├── index.css # Styling
│ └── app.js # Configuration logic
├── templates/ # Typst templates
│ ├── main.typ # Main orchestrator
│ ├── components/ # Page components
│ │ ├── cover.typ
│ │ ├── year.typ
│ │ ├── quarter.typ
│ │ ├── month.typ
│ │ ├── week.typ
│ │ └── daily.typ
│ └── utils/ # Helper functions
│ ├── dates.typ
│ ├── hyperlinks.typ
│ └── styles.typ
├── examples/ # Example configurations
├── fonts/ # Font files
├── server.js # Express server
├── build.sh # Build script
└── package.json
The planner includes intelligent hyperlinks for seamless navigation:
- Year → Months/Days: Click month names or day numbers
- Quarter → Months: Click month names
- Month → Weeks/Days: Click day numbers
- Week → Days: Click day headers
- Back Navigation: Every page links back to parent pages
- Start Simple: Begin with a monthly-only configuration
- Test Navigation: Always test hyperlinks in your target app
- Save Configurations: The web UI downloads your config as JSON
- Customize Colors: Use visual presets or create custom themes
- Paper Styles: "Plain" for maximum flexibility, "Line" for structured notes
You can also build directly from the command line:
./build.sh path/to/config.json [output-name]Generate multiple configurations:
for config in examples/*.json; do
./build.sh "$config"
doneTested with:
- ✅ GoodNotes (iOS/macOS)
- ✅ Notability (iOS/macOS)
- ✅ Apple Notes (iOS/macOS)
⚠️ Remarkable (limited testing)
# Check if port 3000 is in use
lsof -i :3000
# Install dependencies
npm install# Install Typst
brew install typst
# Or download from: https://github.com/typst/typst- Check that your config JSON is valid
- Ensure all required fields are present
- Verify year is between 2000-2100
- Some PDF viewers don't support internal links
- Test in your target app (GoodNotes/Notability)
- Ensure you're using the latest version of the app
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.
Created by Hiran Venugopalan
Made with ❤️ for digital note-takers