DartAPI is a modular and developer-friendly CLI tool for building robust, typed REST APIs using the Dart language.
Rather than acting as a heavy, opinionated framework, DartAPI provides powerful code generation tools that let you build scalable backend applications with clean architecture, JWT authentication, request validation, and PostgreSQL/MySQL support.
dartapi create)dartapi generate controller)dartapi run)Activate globally:
dart pub global activate dartapi
dartapi create <project_name>Creates a full DartAPI project with:
bin/main.dartUserController, AuthController, ProductController)logging, auth)dartapi_authdartapi_dbThere are no additional items we need to required to run the generated project.
Note: that this is not mandatory. You can remove the product controller and DB related code from
the main.dart file if you donβt need it.
But if you want to use the product controller, you need to install the postgres DB.
π§ Step 1: Install PostgreSQL
β On macOS (using Homebrew):
brew install postgresql@14
brew services start postgresql@14
β On Ubuntu / Debian:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql
β On Windows:
β’ Download the PostgreSQL installer from: https://www.postgresql.org/download/windows/
β’ Use the graphical installer to complete the setup.
π¦ Step 2: Create a Database
Run the following commands in your terminal or psql:
psql postgres
Then in the psql prompt:
CREATE DATABASE dartapi_test;
CREATE USER dartuser WITH ENCRYPTED PASSWORD 'postgres';
GRANT ALL PRIVILEGES ON DATABASE dartapi_test TO dartuser;
Update your DbConfig in main.dart as per your configuration:
dartapi generate controller <Name>Adds a controller to an existing DartAPI project:
dartapi generate controller Product
Generates lib/src/controllers/product_controller.dart with GET and POST methods and proper typing.
dartapi run --port <port>Runs your DartAPI server using bin/main.dart.
You can control it interactively:
:q to quitr to reloaddartapi run --port=8080
dartapi create my_app
cd my_app
dart pub get
dartapi run --port=8080
Now open Postman and test /users or /auth/login.
my_app/
βββ bin/
β βββ main.dart
βββ lib/
β βββ src/
β βββ core/ # Server/router setup
β βββ controllers/ # UserController, AuthController, etc.
β βββ dto/ # DTOs with schema
β βββ db/ # DB connection logic
β βββ middleware/ # Auth/logging middleware
β βββ utils/ # Validation, helpers
βββ pubspec.yaml
βββ analysis_options.yaml
ApiRoute<ApiInput, ApiOutput>Checkout the Medium article for more details.
BSD 3-Clause License Β© 2025 Akash G Krishnan
LICENSE