A modern, content-driven portfolio website built with Jaspr and structured as a Dart monorepo.
This project is a personal portfolio website designed to be clean, scalable, and easy to maintain. It leverages the power of the Jaspr framework for building static sites with Dart and is organized as a monorepo using Melos.
Live Demo: siesdart.fly.dev
- Monorepo Architecture: The project is organized as a monorepo using Melos, which simplifies dependency management and script execution across multiple packages.
- Content-Driven: Portfolio content such as projects, experiences, and skills are managed through simple Markdown and YAML files, allowing for easy updates without touching the Dart source code.
- PDF Resume Generation: Includes a feature to dynamically generate a downloadable PDF version of the resume from the same content source.
- Reusable UI Components: A dedicated
uipackage provides a library of reusable components, ensuring a consistent design system across the application. - Clean Architecture: Follows a clean architecture with a clear separation of concerns between data models (
core), features (features/*), UI components (ui), and the main application (apps/portfolio).
The project is a monorepo with the following structure:
.
├── apps
│ └── portfolio/ # The main Jaspr web application
├── packages
│ ├── core/ # Core data models and business logic
│ ├── features
│ │ └── resume/ # Logic for PDF resume generation
│ └── ui/ # Reusable UI components
└── melos.yaml # Melos workspace configuration
- Framework: Jaspr
- Language: Dart
- State Management: Jaspr Riverpod
- Styling: Tailwind CSS
- Monorepo Management: Melos
- Data Serialization: dart_mappable
- PDF Generation: pdf
Make sure you have the Dart SDK installed. Then, activate the following CLI tools:
# Activate Melos for monorepo management
dart pub global activate melos
# Activate the Jaspr CLI
dart pub global activate jaspr_cli-
Bootstrap the workspace: This command installs all dependencies for the root project and all packages.
melos bootstrap
-
Start the development server: This command starts the Jaspr development server with hot-reloading enabled.
melos serve
To build the application for production (generates a static site in apps/portfolio/build/web), run:
melos buildThis project is configured for deployment on Fly.io. Once you have the flyctl CLI installed and configured, you can deploy with:
flyctl deploy --remote-onlyThis project is licensed under the MIT License. See the LICENSE file for details.