{"id":23661431,"url":"https://github.com/khalyomede/mantis","last_synced_at":"2026-02-07T16:01:16.237Z","repository":{"id":267699819,"uuid":"900357786","full_name":"khalyomede/mantis","owner":"khalyomede","description":"A web framework written in V lang.","archived":false,"fork":false,"pushed_at":"2025-11-12T22:57:12.000Z","size":14043,"stargazers_count":36,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-11-30T19:47:31.015Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://khalyomede.github.io/mantis/","language":"V","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/khalyomede.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-08T15:19:52.000Z","updated_at":"2025-11-15T00:30:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"4093b587-c224-4116-b168-95ba138b0ae7","html_url":"https://github.com/khalyomede/mantis","commit_stats":null,"previous_names":["khalyomede/mantis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/khalyomede/mantis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalyomede%2Fmantis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalyomede%2Fmantis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalyomede%2Fmantis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalyomede%2Fmantis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khalyomede","download_url":"https://codeload.github.com/khalyomede/mantis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalyomede%2Fmantis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29199519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T14:35:27.868Z","status":"ssl_error","status_checked_at":"2026-02-07T14:25:51.081Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2024-12-29T04:58:01.396Z","updated_at":"2026-02-07T16:01:16.231Z","avatar_url":"https://github.com/khalyomede.png","language":"V","funding_links":[],"categories":["Recently Updated","Applications","\u003ca name=\"V\"\u003e\u003c/a\u003eV"],"sub_categories":["[Who Wants to Be a Millionare](https://www.boardgamecapital.com/who-wants-to-be-a-millionaire-rules.htm)","Web"],"readme":"# Mantis\n\nType-safe, exception-free no magic web framework for people that like to sleep at night.\n\n```v\nmodule main\n\nimport khalyomede.mantis.http { create_app, App, Response }\nimport khalyomede.mantis.http.route\n\nfn main() {\n  app := create_app(\n    cpus: 8\n    routes: [\n      route.get(path: \"/\", callback: fn (app App) !Response {\n        return app.response.html(content: \"hello world\")\n      })\n    ]\n  )\n\n  app.serve() or { panic(err) }\n}\n```\n\n## Documentation\n\nBrowse [khalyomede.github.io/mantis](https://khalyomede.github.io/mantis).\n\n## Updates\n\nFollow me for updates and feel free to DM/tweet for questions:\n\nhttps://x.com/anwar_nairi\n\n_Currently reworking internals to split key parts (query builder, router, ...) into separate V packages._\n\n## License\n\nMantis is open-sourced software licensed under the [MIT license](LICENSE.md).\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n## Alternatives\n\n- [veb](https://modules.vlang.io/veb.html): the official V web framework\n- [awesome-v](https://github.com/vlang/awesome-v): a curated list of V packages including web tools\n- [vpm](https://vpm.vlang.io/): the official V package registry\n\n## Run tests\n\n```bash\nv -stats -N -W test .\n```\n\n## Roadmap\n\n_This is just informative and plan may change a little bit according to priorities given the fact I work on it on my free time. Bare with me and thanks for your patience!_\n\n██░░░░░░░░░░░░░░░░░░ (30/107 - 28%)\n\n- Routing\n  - ✅ Get routes\n  - ✅ Post routes\n  - ✅ Routes with parameters\n- Middlewares\n  - Global middlewares\n    - ✅ before route matching\n    - ✅ after route matching\n  - Route-level middlewares\n    - ✅ before route renders\n    - ✅ after route renders\n  - ⏳ Middleware interruption\n    - Before route matching/rendering\n      - Continue\n      - Skip to route\n      - Terminate\n    - After route matching/rendering\n      - Continue\n      - Terminate\n- Views\n  - ⏳ HTML components\n  - ⏳ HTML enum attributes\n  - ⏳ Static pages\n- Translations / internationalization (i18n)\n  - ✅ Simple texts\n  - ✅ Translation parameters\n  - ✅ Singular/plural translation\n  - ✅ Gender translation (feminine/masculine)\n- Session management\n  - Drivers\n    - ✅ Local file\n    - ✅ Cookie (client read-only)\n    - ⏳ Database\n    - ⏳ Redis\n- Validation\n  - ✅ Basic validation\n  - ⏳ Rules\n  - ⏳ And, Or, Not\n  - ⏳ Validation helper\n  - ✅ Custom rules\n- Request\n  - ✅ Parsing query\n  - ✅ Parsing body\n  - ⏳ Form integrity checker\n  - ⏳ Multipart/form-data form file parsing\n- Url\n  - ✅ Url builder\n- Response\n  - ✅ Basic HTML response\n  - ✅ Response headers\n  - ✅ Redirect responses\n  - ⏳ Streamed response\n  - ⏳ Keep-alive response\n  - ⏳ Chunked transfer encoding\n- Environment\n  - ✅ Dot env embeded values\n  - ⏳ Nested envs in other envs\n- Database\n  - ⏳ Max connections settings (with wait mecanism)\n  - ✅ Typed MySQL query result (struct)\n  - ⏳ Support for relationships\n  - Drivers\n    - ⏳ MySQL/MariaDB\n    - ⏳ Postgres\n    - ✅ Sqlite\n    - ⏳ Local file\n    - ⏳ Migrations\n    - ⏳ Seeders\n- Real time\n  - Web socket drivers\n    - ⏳ Server-Side Events (SSE)\n  - Push notification drivers\n    - ⏳ Local file\n    - ⏳ Firebase\n    - ⏳ Pusher\n- Security\n  - Authentication drivers\n    - ⏳ Database\n  - Single Sign-On\n    - ⏳ Google\n    - ⏳ Facebook\n    - ⏳ Apple\n    - ⏳ Twitter\n    - ⏳ Linkedin\n    - ⏳ Github\n  - Views\n    - ⏳ XSS protection\n  - Session\n    - ⏳ Encrypted session ids (read-only Cookie / File-based session)\n    - ⏳ CSRF protection\n    - ⏳ Rate limit helper\n  - Encryption\n    - ⏳ Crypt/decrypt helper\n  - Password hasher\n    - ⏳ Password Hash helper\n  - Validation\n    - ⏳ Escaping HTML inside string values\n  - Url\n    - ⏳ Escaping URL parts\n  - Request\n    - ⏳ Form body size limit\n- Communication\n  - ⏳ HTTP client\n  - Email driver\n    - ⏳ Local file\n    - ⏳ Mailtrap\n    - ⏳ SMTP mailer\n  - SMS drivers\n    - ⏳ Local file\n    - ⏳ Vonage\n    - ⏳ Twilio\n- File storage drivers\n  - ⏳ Local file\n  - ⏳ AWS S3\n- Task scheduling\n  - ⏳ Command builder\n  - ⏳ Cron scheduler\n- Background task drivers\n  - ⏳ Local file\n  - ⏳ Database\n- Monitoring\n  - Logging drivers\n    - ✅ Local file\n    - ⏳ Syslog\n    - ⏳ Papertrail\n  - Error tracking drivers\n    - ⏳ Local file\n    - ⏳ Sentry\n- Local development\n  - Local running\n    - ⏳ Docker image\n  - Testing\n    - ⏳ Unit test helpers\n    - ⏳ Mocking utilities\n  - Assets bundling\n    - ⏳ Vite.js\n    - ⏳ Static file serving\n- Performance\n  - ⏳ Improved concurrency performance\n  - ⏳ Memory efficient Fake data generator\n- Production running\n  - ⏳ On-demand mode\n  - ✅ Standalone mode (multi-cores)\n  - ⏳ Zero traffic-loss live-code update (no downtime deployment)\n  - ⏳ Embeded HTTPS/SSL request handling\n- Testing\n  - ✅ Expect test-style\n  - ⏳ HTTP expectations\n  - ⏳ Error stack trace (like built-in assert)\n  - ✅ Fake data generator\n- Comparisons\n  - ✅ Laravel\n  - ⏳ Rails\n  - ⏳ AdonisJS\n  - ⏳ Express\n  - ⏳ Gin\n- Examples\n  - ⏳ With HTMX\n  - ⏳ Inertia adapter\n- ✅ Online documentation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalyomede%2Fmantis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhalyomede%2Fmantis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalyomede%2Fmantis/lists"}