Zettel is a desktop Command Line Interface (CLI) application for managing a personal Zettelkasten note-taking system. It's optimized for users who prefer keyboard commands, allowing you to efficiently build and navigate a knowledge base through your keyboard.
- Multiple repositories: Create and switch between different note repositories
- Note management: Create, edit, delete, and search notes with unique IDs
- Organization: Pin important notes, archive old ones, and tag notes for categorization
- Linking: Create one-way or bidirectional links between notes to build a knowledge graph
- Tags: Global tag management with rename and delete operations
- Search: Find notes by content or metadata
- JDK 17 (use the exact version)
- Gradle (included via wrapper)
- Ensure JDK 17 is configured as described here
- Import the project as a Gradle project as described here
- Verify setup: Locate
src/main/java/seedu/zettel/Zettel.java, right-click and chooseRun Zettel.main()
Build and run using Gradle:
./gradlew build
./gradlew runOr on Windows:
gradlew.bat build
gradlew.bat run# Initialize a new repository
init my_notes
# Create a note
new -t "First Note" -b "This is my first note"
# List all notes
list
# Pin a note
pin a1b2c3d4
# Add tags
new-tag important
add-tag a1b2c3d4 important
# Link notes together
link a1b2c3d4 e5f6g7h8
# Search for notes
find "keyword"For detailed command documentation, see the User Guide.
Note: Keep the src\main\java folder as the root folder for Java files, as this is the default location some tools (e.g., Gradle) expect to find Java files.
Run automated tests:
./gradlew testOr on Windows:
gradlew.bat testRun I/O redirection tests:
cd text-ui-test
./runtest.sh # Linux/Mac
runtest.bat # WindowsThis project uses:
- Gradle for build automation and dependency management (see
build.gradle) - Checkstyle for code style enforcement (configuration in
config/checkstyle/) - GitHub Actions for continuous integration
Run Checkstyle locally:
./gradlew checkstyleMain checkstyleTestIf you are new to these tools:
Full documentation is available in the docs/ folder:
- User Guide - Complete command reference and usage instructions
- Developer Guide - Architecture and implementation details
- About Us - Team information
src/main/java/seedu/zettel/
├── commands/ # All command implementations
├── storage/ # File I/O and repository management
├── exceptions/ # Custom exceptions
├── util/ # Utility classes
├── Note.java # Note data structure
├── UI.java # User interface handling
├── Parser.java # Command parsing
└── Zettel.java # Main application class
See CONTRIBUTORS.md for the list of contributors.
When contributing:
- Follow the existing code style (enforced by Checkstyle)
- Add tests for new features
- Run
./gradlew checkbefore submitting PRs - Update relevant documentation
This project is based on the Duke project template for CS2113 at the National University of Singapore.