Skip to content

ashtonjamesd/lavandula

Repository files navigation

drawing


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.

#include "lavandula.h" 

appRoute(home, ctx) {
  return ok("Hello, World", TEXT_PLAIN);
}

int main() {
  App app = createApp();
  get(&app, "/home", home);

  runApp(&app);
}

See /examples for more.

Join the Discord server

Lavandula

⚠️ Notice: Lavandula is still in early development and not ready for production use.
Expect frequent breaking changes and incomplete documentation.


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
  • Static file serving
  • Request validator library
  • 'Hot Restart' mechanism

In Progress

  • CORS policy configuration
  • Multithreading
  • TLS
  • PostgreSL, MySQL integrations, etc
  • Rate Limiting
  • Session cookies

Installation

To install Lavandula, follow these setps.

  1. Clone the repository
git clone https://github.com/ashtonjamesd/lavandula.git
cd lavandula
  1. 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
  1. Finish

You should now be able to run the Lavu CLI tool and begin writing your application. Refer to this document for how to use Lavu.

Getting Started

  1. Create a new project
lavu new myProject

This will set up an application folder structure and copy the Lavandula /src directory into the created folder structure. This allows you to easily compile the framework and your app together.

Output:

Setting up Lavandula project 'myProject'...

-> Created myProject/lavandula.yml

...

πŸŽ‰ Lavandula project 'myProject' setup finished successfully!

Next steps:
  1. cd myProject
  2. lavu run
  1. Run
lavu run

Your application will run on http://localhost:3000/.

  1. Read the docs

Contributing

Contributions are welcome. Feel free to submit pull requests or open issues for feature requests or bugs.

Some places to start:

  • Possible memory leaks
  • Application security
  • Outdated and unfinished documentation (API changes warrant a docs update)

License

Lavandula is registered under the MIT License.

About

A intuitive, lightweight web framework in C for building modern web applications

Topics

Resources

License

Contributing

Stars

Watchers

Forks