dartness icon indicating copy to clipboard operation
dartness copied to clipboard

Dartness is a framework for building efficient, scalable dart server-side applications. It provides an easy and quick way to develop modern standalone server.

Dartness

Introduction

Dartness is a dart framework for building efficient and scalable server-side applications.

Description

Dartness is a framework for building efficient, scalable dart server-side applications. It provides an easy and quick way to develop modern standalone server.

Under the hood, Dartness makes use of shelf.

Inspired by Spring Boot and Nest frameworks

Goals

The following goals are the main objectives that Dartness needs to provide and why it was designed for:

  • ๐Ÿ›  Full stack integration with flutter or other dart front end frameworks
  • ๐Ÿคนโ€โ™€๏ธ๐Ÿคนโ€โ™‚๏ธ Easy and understandable for people coming from other kind of technology as Spring Boot and NestJS
  • โœ Simplicity, it should be easy to know why and how to use every functionality
  • ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป Community empowered, where the community should be able to understand and maintain the dartness project by their own

Examples

You can find different examples if you prefer to understand the code by yourself in the /examples folder.

Requisites

Install Dart SDK version >=3.0.0

$ dart --version            
Dart SDK version: 3.0.0 (stable)

Docs and more

You can check the documentation at dartness docs

Creating a new project

$ dart create -t console your_project_name

1. Add dartness into the pubspec.yaml

dependencies:
  dartness_server: ^0.6.0

dev_dependencies:
  build_runner: ^2.2.0
  dartness_generator: ^0.6.0

2.Create the file in "src/app.dart"

@Application(
  module: Module(
    metadata: ModuleMetadata(
      controllers: [],
      providers: [],
      exports: [],
      imports: [],
    ),
  ),
  options: DartnessApplicationOptions(
    port: int.fromEnvironment(
      'port',
      defaultValue: 8080,
    ),
  ),
)
class App {}

4.Generate the code

$ dart run build_runner build

5.Modify "bin/main.dart"

void main(List<String> args) async {
  await App().init();
}

6.Run the server

$ dart run bin/main.dart
Server listening on port 3000

Example

You can run the example with the Dart SDK like this:

$ dart run example/main.dart
Server listening on port 3000

TODO

  1. HTTP
    • Controllers
      • Bind annotations
      • Header
      • Body
      • Param
      • Query
    • Middleware
    • Interceptor
    • Websockets
  2. Exceptions
    • Exception Handler
  3. Security
    • Roles
    • CORS
  4. Dependency Injection
    • Injectable
  5. Scheduling
    • Annotation
  6. Database
    • ORM
    • Repository
  7. Testing
  8. CLI