MCPcopy Index your code
hub / github.com/ashtonjamesd/lavandula

github.com/ashtonjamesd/lavandula @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
405 symbols 1,266 edges 81 files 10 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

drawing

Lavandula is a lightweight, fast, and intuitive C web framework designed for building small web applications quickly. It focuses on simplicity, performance, and productivity.

#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.

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
  • PostgreSQL, MySQL integrations, etc
  • Rate Limiting
  • Session cookies

Installation

To install Lavandula, follow these steps.

  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

  2. Getting Started

  3. Project Tutorial

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.

Core symbols most depended-on inside this repo

base64Encode
called by 44
src/http/base64.c
jsonBuilder
called by 21
src/core/json.c
checkBasicCredentials
called by 19
src/http/auth.c
freeJsonBuilder
called by 19
src/core/json.c
ok
called by 18
src/core/router.c
corsPolicy
called by 17
src/http/cors.c
base64Decode
called by 16
src/http/base64.c
addBasicCredentials
called by 16
src/http/auth.c

Shape

Function 393
Class 12

Languages

C98%
C++2%

Modules by API surface

src/core/router.c69 symbols
test/base64_test.c37 symbols
src/core/json.c36 symbols
src/core/lavandula.c32 symbols
src/core/cli.c18 symbols
src/lavender/lavender_lexer.c16 symbols
src/core/dotenv.c15 symbols
test/cors_test.c14 symbols
test/auth_test.c14 symbols
src/lavender/lavender_parser.c13 symbols
src/http/http.c12 symbols
test/json_test.c11 symbols

For agents

$ claude mcp add lavandula \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact