An asynchronous multiprocessing full-stack web framework for Nim, based on asynchttpserver.
The only supported OS are Alpine, Debian, and Ubuntu.
It is recommended to use Docker regular flavor for development.
nimlang/nim:1.6.6-alpine-regular
or nimlang/nim:1.6.6-ubuntu-regular
https://hub.docker.com/r/nimlang/nim
in Ubuntu 22.04ใNim can' run because of OpenSSL3 and recommand to use Debian 11.
FROM debian:11.5-slim
# prevent timezone dialogue
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update --fix-missing && \
apt upgrade -y
RUN apt install -y --fix-missing \
gcc \
g++ \
xz-utils \
ca-certificates \
vim \
wget \
procps \
git \
sqlite3 \
libpq-dev \
libmariadb-dev \
libsass-dev
ARG VERSION="1.6.8"
WORKDIR /root
RUN wget --inet4-only https://nim-lang.org/download/nim-${VERSION}-linux_x64.tar.xz && \
tar -Jxf nim-${VERSION}-linux_x64.tar.xz && \
rm -f nim-${VERSION}-linux_x64.tar.xz && \
mv nim-${VERSION} .nimble
ENV PATH $PATH:/root/.nimble/bin
Table of Contents
Introduction
Basolato extends asynchttpserver, an implements a high performance asynchronous HTTP server in Nim std library, 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):
- allographer, a library for building queries.
- flatdb, a small Flatfile database, used for sessions.
- bcrypt, used for hashing passwords.
- faker, for generating fake data.
- sass, provides a Sass/SCSS to CSS compiler for
Nim
through bindings tolibsass
.
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:
โโโ app
โย ย โโโ data_stores
โย ย โย ย โโโ queries
โย ย โย ย โโโ repositories
โย ย โโโ di_container.nim
โย ย โโโ http
โย ย โย ย โโโ controllers
โย ย โย ย โย ย โโโ welcome_controller.nim
โย ย โย ย โโโ middlewares
โย ย โย ย โย ย โโโ auth_middleware.nim
โย ย โย ย โย ย โโโ set_headers_middleware.nim
โย ย โย ย โโโ views
โย ย โย ย โโโ errors
โย ย โย ย โโโ layouts
โย ย โย ย โย ย โโโ application_view.nim
โย ย โย ย โย ย โโโ head_view.nim
โย ย โย ย โโโ pages
โย ย โย ย โโโ welcome_view.nim
โย ย โโโ models
โย ย โโโ usecases
โโโ config
โย ย โโโ database.nim
โโโ config.nims
โโโ database
โย ย โโโ migrations
โย ย โย ย โโโ migrate.nim
โย ย โโโ seeders
โย ย โโโ seed.nim
โโโ main.nim
โโโ public
โย ย โโโ basolato.svg
โย ย โโโ css
โย ย โโโ favicon.ico
โย ย โโโ js
โโโ resources
โย ย โโโ lang
โย ย โโโ en
โย ย โย ย โโโ validation.json
โย ย โโโ ja
โย ย โโโ validation.json
โโโ {project_name}.nimble
โโโ tests
โโโ test_sample.nim
With your project ready, you can start serving requests using ducere
:
ducere serve # includes hot reloading
> Run server for development
ducere build
./startServer
> Run server for production
Documentation
English
ๆฅๆฌ่ช
Benchmark
- https://github.com/the-benchmarker/web-frameworks
- https://www.techempower.com/benchmarks/#section=test&shareid=438dcd5c-e449-43d7-841e-b6e38c37bb62&test=query
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