Slate is a lightweight, slightly opinionated web framework that strikes a balance between convention and flexibility. It provides a solid foundation with clear default patterns, without getting in your way. You get structure where it helps, and freedom where it matters.
Chalk, built on top of Slate, is a highly opinionated application framework that provides higher-level patterns and tools to simplify building complete, full-featured applications.
Slate draws inspiration from frameworks like Express and hapi, tools known for their simplicity and extensibility. The aim is to preserve that ethos while providing just enough structure to simplify development without limiting flexibility.
Building on this foundation, Chalk draws from years of real-world experience, and plenty of lessons learned the hard way.
The project has evolved into a monorepo, though splitting into multiple repositories may be considered later. For now, the focus is on keeping things approachable and easy to manage as a hobby project.
Here is an overview of the current structure:
├── frameworks/slate/ # Web framework
├── frameworks/chalk/ # Application framework
|
├── provider/typeorm/ # TypeORM DataProvider
├── provider/marko/ # Marko ViewProvider
|
└── apps/demo/ # Demo application
Slate is the web framework at the heart of the project, handling routing, middleware, and core web functionality. It provides a solid, flexible, and extendible foundation for building higher-level frameworks and applications
Chalk sits on top of Slate, providing opinionated patterns and tools that make building complete, full-featured applications faster and easier.
Integrates TypeORM as a DataProvider, simplifying database access and ORM workflows.
Integrates Marko as a ViewProvider for fast, component-based rendering.
A reference implementation that demonstrates how Slate, Chalk, and extensions work together. It serves as both an example and a testing ground for framework and extension development.
To get up and running with the Slate framework and demo application:
- Node.js version 16.0.0 or higher
-
Clone the repository:
git clone https://github.com/robertcalvert/slate.git cd slate -
Install dependencies for all packages:
npm install
-
Start the demo app:
npm run dev -w demo
-
Visit
http://localhost:3000in your browser to view the running application.
To make changes to the framework or any extension:
-
Navigate to the relevant package:
cd frameworks/slate -
Make your changes and test them locally as needed.
Slate is a personal project, so while contributions are welcome, please understand that responses or reviews may be slower than in larger, more active projects.
To contribute:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Make your changes.
- Submit a pull request with a clear explanation of your work.
- The changes will be reviewed as soon as possible.
Thank you for your interest in contributing!
This project is under the copyright of the author. For full details, see the LICENSE file.