Skip to content

A fullstack web framework for Nim based on Jester

Notifications You must be signed in to change notification settings

yoritin/nim-basolato

 
 

Repository files navigation

Basolato Framework


A full-stack web framework for Nim, based on Jester.

⚠️ This project is under heavy development. It's not yet production-ready. ⚠️

Table of Contents

Introduction

Basolato extends Jester, an awesome Sinatra-like framework for Nim, while also adding features for full-stack development. It was also heavily inspired by other frameworks:

Language Framework
Ruby Rails
PHP Laravel
Python Masonite
Java/Scala Play
Go Revel

Set up your environment

In order to start using Basolato, you'll first need a working Nim installation. You can find installation instructions for Nim here. Once installed, make sure Nimble, Nim's package manager, is already in your PATH. If not, add .nimble/bin in your favorite shell.

export PATH=$PATH:~/.nimble/bin

Dependencies

The framework depends on several libraries (installed automatically by Nimble):

  • httpbeast, a highly performant, multi-threaded HTTP 1.1 server written in Nim.
  • nim-templates, a simple string templating library.
  • allographer, a library for building queries.
  • flatdb, a small Flatfile database, used for sessions.
  • bcrypt, used for hashing passwords.
  • nimAES, for AES support.
  • faker, for generating fake data.

The following libraries can be used for making views:

Installation

You can install Basolato easily using Nimble:

nimble install https://github.com/itsumura-h/nim-basolato

After installing Basolato, you should have access to the ducere command on your shell.

Creating projects

Using ducere you can easily create a template project structure to start development right away. Ducere will generate a folder automatically using your project name.

cd /your/project/dir
ducere new {project_name}

The overall file structure is as follows:

├── .gitignore
├── app
│   ├── controllers
│   │   ├── README.md
│   │   └── welcome_controller.nim
│   ├── domain
│   │   ├── models
│   │   │   ├── README.md
│   │   │   ├── di_container.nim
│   │   │   └── value_objects.nim
│   │   └── usecases
│   │       └── README.md
│   └── middlewares
│       ├── README.md
│       ├── custom_headers_middleware.nim
│       └── framework_middleware.nim
├── config.nims
├── main.nim
├── migrations
│   ├── README.md
│   ├── migrate.nim
│   └── migration0001sample.nim
├── public
│   ├── README.md
│   ├── basolato.svg
│   ├── css
│   ├── favicon.ico
│   └── js
├── resources
│   ├── README.md
│   ├── layouts
│   │   ├── application.nim
│   │   └── head.nim
│   └── pages
│       └── welcome_view.nim
├── session.db
├── {project_name}.nimble
└── tests

With your project ready, you can start serving requests using ducere:

ducere serve # includes hot reloading

Or by compiling through Nim:

nim c -r main

Documentation

Benchmark

Roadmap

Version Content
v1.0 Support Clean architecture and Tactical DDD
v2.0 Support GraphQL

Development

Generate TOC of documents

Run.

nimble setupTool # Build docker image
nimble toc # Generate TOC

About

A fullstack web framework for Nim based on Jester

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nim 99.7%
  • Other 0.3%