{"id":32274605,"url":"https://github.com/carlosjs23/evy","last_synced_at":"2026-02-23T10:32:42.161Z","repository":{"id":56828540,"uuid":"143107110","full_name":"carlosjs23/evy","owner":"carlosjs23","description":"Dart 2 Web Framework, with an ExpressJS like API.","archived":false,"fork":false,"pushed_at":"2025-08-16T22:35:29.000Z","size":61,"stargazers_count":20,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-22T23:41:59.591Z","etag":null,"topics":["dart","dart2","express","flutter","framework"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carlosjs23.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-01T05:16:21.000Z","updated_at":"2023-09-08T17:43:22.000Z","dependencies_parsed_at":"2022-08-28T21:10:25.449Z","dependency_job_id":null,"html_url":"https://github.com/carlosjs23/evy","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/carlosjs23/evy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosjs23%2Fevy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosjs23%2Fevy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosjs23%2Fevy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosjs23%2Fevy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carlosjs23","download_url":"https://codeload.github.com/carlosjs23/evy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosjs23%2Fevy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","dart2","express","flutter","framework"],"created_at":"2025-10-22T23:37:59.442Z","updated_at":"2026-02-23T10:32:42.153Z","avatar_url":"https://github.com/carlosjs23.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evy\n\n[![Gitter chat](https://badges.gitter.im/carlosjs23/Evy.png)](https://gitter.im/evy-dart/evy)\n\nEvy is a Dart 2 Web Framework, with an ExpressJS like API.\n\n## Getting Started\n\nFor start using Evy in your project you need to clone this repo and add it to dependencies section in your pubspec.yaml file:\n\n```yaml\n# pubspec.yaml\nname: example_app\ndescription: My app\n\ndependencies:\n evy: \n    path: /path/to/evy\n```\n\n### Prerequisites\n\n* [Dart 2 SDK](https://www.dartlang.org/tools/sdk#install)\n \n## Example code\n \n```dart\nimport 'package:evy/evy.dart';\n\nvoid main() {\n  var app = Evy();\n\n  /// This middleware will match all routes.\n  app.use(handler: logRequest);\n\n  /// This middleware will be called only for '/greet/:name' routes.\n  app.use(path: '/greet/:name', handler: checkName);\n\n  /// This middleware will be called only for '/greet/:name' routes.\n  /// It will be executed after checkName middleware.\n  app.use(path: '/greet/:name', handler: changeName);\n\n  /// Or just pass the middleware callbacks as a list.\n  ///  app.use(path: '/greet/:name', callback: [checkName, changeName]);\n\n  ///Routes can have a callback for process the request.\n  app.get(path: '/greet/:name', handler: sayHello);\n\n  ///Path can be a RegExp, this route will match /evy, /evyhi, /whateverevy... .\n  app.get(path: RegExp('/.*evy'), handler: sayHello);\n\n  ///Path can be a List of Strings, this will match /users, /user and /client.\n  app.get(path: ['/users', '/user', '/client'], handler: sayHello);\n\n  app.listen(\n      port: 3000,\n      callback: (error) {\n        if (error != null) {\n          print(error);\n        } else {\n          print('Server listening on port 3000');\n        }\n      });\n}\n\nvoid changeName(Request req, Response res, next) {\n  if (req.params['name'] == 'Alberto') {\n    req.params['name'] = 'Carlos';\n  }\n  next();\n}\n\nvoid checkName(Request req, Response res, next) {\n  if (req.params['name'] != 'Alberto') {\n    res.send('Only Alberto is allowed to use this action');\n  } else {\n    next();\n  }\n}\n\nvoid logRequest(Request req, Response res, next) {\n  /// Do your logging stuff and then call next()\n  print('${req.ip} - - [${DateTime.now()}] \"${req.method} ${req.originalUrl}\"');\n  next();\n}\n\nvoid sayHello(Request req, Response res, next) {\n  if (req.params['name'] != null) {\n    res.send('Hello ${req.params['name']}');\n  } else {\n    res.send('Hello');\n  }\n}\n```\n\n### Todo\n - [X] Implement basic HTTP methods (~~POST~~, PUT, etc).\n - [X] Create Request and Response wrappers.\n - [X] Per Route Middlewares.\n - [X] Global Middlewares.\n - [X] Sub-apps ``app.use(path: '/billing', app: billingApp)``.\n - [ ] ~~Serve static files~~ (Use a package instead).\n - [ ] ~~Content body parsing~~ (Use a package instead).\n - [ ] Routes group.\n - [ ] Publish package to Dart Packages.\n - [ ] Testing.\n - [ ] Logo design.\n ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlosjs23%2Fevy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarlosjs23%2Fevy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlosjs23%2Fevy/lists"}