Lavandula Lavandula is a lightweight, fast, and intuitive C web framework designed for building modern web applications quickly. It focuses on simplicity, performance, and productivity, providing all the essentials without the bloat of heavier frameworks. Example #include "lavandula.h" // define a route for your app appRoute ( home ) { return ok ( "Hello, World" ); } int main () { // initialise your app App app = createApp (); // register a route in your app get ( & app , "/home" , home ); // run the app runApp ( & app ); } Features Controller and routing system HTTP endpoint support (GET, POST, etc) Controller local/global middleware pipeline Minimal dependencies (pure C) Quick project scaffolding via the CLI Built-in unit testing framework Environment variable support Built-in logging SQLite integration Built-in JSON library In Progress HTTP JSON body parsing Session cookies CORS policy configuration Lavender ORM Embedded Lavandula (ELA) HTML templating engine Future Rate Limiting Static file serving PostgreSL, MySQL integrations, etc Potential dependency injection framework Route/Available endpoint listing JSON model and function scaffolding lavu model User name:string age:int generates User struct, JSON serialization, CRUD endpoints in user_controller.c URL parameter parsing and routing Installation To install Lavandula, follow these setps. Clone the repository git clone https://github.com/ashtonjamesd/lavandula.git cd lavandula Run the install script ./install.sh You should see the following: [SUCCESS] 🎉 Lavandula installation completed ! Quick Start: lavu new my-project # Create a new project cd my-project lavu run # Run your project Documentation: GitHub: https://github.com/ashtonjamesd/lavandula Finish You should now be able to run the Lavu CLI tool. Refer to api.md for how to use Lavu. Getting Started Create a new project lavu new myProject Output: Setting up Lavandula project 'myProject'... -> Created myProject/lavandula.yml -> Created myProject/app/app.c -> Created myProject/app/controllers/home.c -> Created myProject/app/routes.c -> Created myProject/makefile -> Created myProject/tests/tests.c 🎉 Lavandula project 'myProject' setup finished successfully! Next steps: 1. cd myProject 2. lavu run Run lavu run Your application will run on http://localhost:3000/. Contributing Contributions are welcome. Feel free to submit pull requests or open issues for feature requests or bugs. Some things that probably need looking at are: memory leaks outdated and unfinished documentation (API changes warrant a docs update) The JSON library does not currently support nested lists Some tests need to be written... License Lavandula is registered under the MIT License.e