flint_dart 1.0.0+5
flint_dart: ^1.0.0+5 copied to clipboard
A minimal Dart backend framework by Eulogia Technologies.
Flint Dart ๐ฅ #
Flint Dart is a minimal, expressive, and extensible server-side framework built with Dart. Inspired by the simplicity of Express.js and Laravel, Flint provides an elegant developer experience for building RESTful APIs and backend services with Dart.
Developed and maintained by Eulogia Technologies.
๐ Table of Contents #
Topic | Description |
---|---|
๐ Getting Started | Set up Flint in your project |
๐ฃ๏ธ Routing | Define routes for your Flint Dart app |
๐ก Middleware | Protect and modify requests with middleware |
๐ ORM & Models | Work with databases using Flint Dart ORM |
๐พ Database & Migrations | Manage your database schema and migrations |
๐ Authentication | Built-in authentication and Google Auth support |
โ Validation | Validate input like Laravel |
โป๏ธ Hot Reload | Instant feedback while developing |
๐พ Storage | Storage Flint Dart to production |
๐ข Deployment | Deploy Flint Dart to production |
๐ API Docs | Best-in-class API documentation with Swagger UI |
โจ Features #
- ๐งฑ Simple and intuitive routing
- ๐ก๏ธ Middleware support
- ๐ Built-in JWT authentication
- ๐ Secure password hashing
- โป๏ธ Hot reload support for rapid development
- ๐งช Modular structure for scalable projects
- ๐ก Clean API design inspired by Flutter's widget philosophy
- ORM for MySQL/Postgres
- CLI for migrations, models, etc.
๐ Getting Started #
1. Install as a Global Package #
If you want to quickly create and run apps without adding Flint as a dependency, install it globally:
dart pub global activate flint_dart
flint create new_app # Create a new Flint project
flint run # Run the project
2. Add as a Project Dependency #
If you prefer Flint to be part of your projectโs dependencies:
dart pub add flint_dart
dart run
import 'package:flint_dart/flint_dart.dart';
void main() {
final app = Flint();
app.get('/', (req, res) async {
return res.send('Welcome to Flint Dart!');
});
app.listen(3000);
}
3. Run with hot reload #
app.get('/hello', (req, res) async {
return res.json({'message': 'Hello, world!'});
});
Middleware #
import 'package:flint_dart/flint_dart.dart';
class AuthMiddleware extends Middleware {
@override
Handler handle(Handler next) {
return (Request req, Response res) async {
final token = req.bearerToken;
if (token == null || token != "expected_token") {
return res.status(401).send("Unauthorized");
}
return await next(req, res);
};
}
app.put('/:id', AuthMiddleware().handle(controller.update));
JWT Authentication #
final token = JwtUtil.generateToken({'userId': 123});
final payload = JwtUtil.verifyToken(token);
Password Hashing #
final hash = Hashing.hashPassword('mySecret');
final isValid = Hashing.verifyPassword('mySecret', hash);
๐ Project Structure #
lib/
โโโ main.dart
โโโ src/
โ โโโ app.dart
โ โโโ router.dart
โ โโโ request.dart
โ โโโ response.dart
โ โโโ middleware.dart
โ โโโ security/
โ โโโ jwt_util.dart
โ โโโ hashing.dart
๐ฎ Contact & Support ๐ Website: flintdart.eulogia.net
๐ง Email: eulogiatechnologies@gmail.com
๐ GitHub: github.com/eulogiatechnologies/flint_dart
๐ Contributing We welcome contributions! To get started:
git clone https://github.com/eulogiatechnologies/flint_dart.git
cd flint_dart
dart pub get
Then feel free to submit issues or pull requests.