khadem 1.0.4-beta copy "khadem: ^1.0.4-beta" to clipboard
khadem: ^1.0.4-beta copied to clipboard

A modern Dart backend framework with CLI tools, ORM, authentication, and caching for scalable web applications.

example/lib/main.dart

import 'dart:async';
import 'dart:io';

import 'package:khadem/khadem.dart'
    show Khadem, ContainerInterface, SocketServer, Server, SocketManager;

import '../core/kernel.dart';
import '../routes/socket.dart';
import '../routes/web.dart';

Future<void> main(List<String> args) async {
  if (_isSnapshotBuild()) return;

  final container = Khadem.container;
  await Kernel.bootstrap();

  final port =
      _extractPort(args) ?? Khadem.env.getInt("APP_PORT", defaultValue: 9000);

  await Future.wait([
    _startHttpServer(port, container),
    _startSocketServer(container, Khadem.socket),
  ]);
}

bool _isSnapshotBuild() =>
    Platform.environment.containsKey('KHADIM_JIT_TRAINING');

Future _startHttpServer(int port, ContainerInterface container) async {
  final server = Server();
  registerRoutes(server);
  server.setInitializer(() async {
    registerRoutes(server);
    await server.start(port: port);
  });
  await server.reload();
}

Future<void> _startSocketServer(
  ContainerInterface container,
  SocketManager manager,
) async {
  final socketPort = Khadem.env.getInt("SOCKET_PORT", defaultValue: 8080);
  final socketServer = SocketServer(socketPort, manager: manager);

  registerSocketRoutes(socketServer); // 👈 Socket routes

  await socketServer.start();
}

int? _extractPort(List<String> args) {
  final portIndex = args.indexOf('--port');
  if (portIndex != -1 && args.length > portIndex + 1) {
    return int.tryParse(args[portIndex + 1]);
  }
  return null;
}
2
likes
160
points
262
downloads

Publisher

unverified uploader

Weekly Downloads

A modern Dart backend framework with CLI tools, ORM, authentication, and caching for scalable web applications.

Repository (GitHub)
View/report issues

Topics

#web-framework #backend #server #api #database

Documentation

Documentation
API reference

License

Apache-2.0 (license)

Dependencies

archive, args, crypto, dart_jsonwebtoken, glob, intl, mime, mysql1, package_config, path, recase, redis, timezone, uuid, vm_service, watcher, yaml, yaml_edit

More

Packages that depend on khadem