|
| 1 | +## Helium Web Framework Roadmap |
| 2 | + |
| 3 | +This document outlines the development roadmap for Helium, a lightweight, configurable micro web framework for Zig. |
| 4 | + |
| 5 | +> [!IMPORTANT] |
| 6 | +> This roadmap is a living document and may change based on community feedback and evolving needs. |
| 7 | +
|
| 8 | +### Philosophy & Design Goals |
| 9 | + |
| 10 | +Helium is designed as a **micro-framework** with these core principles: |
| 11 | +- **Configurability First**: Nothing is hardcoded; everything is opt-in and customizable |
| 12 | +- **Minimal Core**: Keep the core API small and focused |
| 13 | +- **Composability**: Features should be independent and composable |
| 14 | +- **Zero Magic**: Explicit, predictable behavior without hidden abstractions |
| 15 | +- **Performance**: Efficient use of resources with multiple concurrency models |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +### ✅ Implemented Features |
| 20 | + |
| 21 | +#### Core Framework |
| 22 | +- [x] Generic `App` type with custom context support |
| 23 | +- [x] Type-safe request handlers and middleware |
| 24 | +- [x] Configurable memory allocator per application |
| 25 | +- [x] Custom error handler support |
| 26 | +- [x] Multi-mode server (thread pool and event-driven I/O) |
| 27 | + |
| 28 | +#### Routing System |
| 29 | +- [x] Express.js-like routing API |
| 30 | +- [x] HTTP method support (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) |
| 31 | +- [x] Dynamic route parameters (e.g., `/users/:id`) |
| 32 | +- [x] Query parameter parsing |
| 33 | +- [x] Route grouping with shared path prefixes |
| 34 | +- [x] Tree-based router for efficient path matching |
| 35 | + |
| 36 | +#### Middleware System |
| 37 | +- [x] Global middleware (applied to all routes) |
| 38 | +- [x] Group-scoped middleware (applied to route groups) |
| 39 | +- [x] Route-specific middleware chains |
| 40 | +- [x] Middleware composition with `next()` pattern |
| 41 | +- [x] Type-safe middleware signatures |
| 42 | + |
| 43 | +#### Built-in Utilities |
| 44 | +- [x] CORS middleware (allow-all origins) |
| 45 | +- [x] Static file server with path traversal protection |
| 46 | +- [x] Common log format middleware with timing |
| 47 | +- [x] JSON response helpers |
| 48 | + |
| 49 | +#### Request/Response |
| 50 | +- [x] Request parameter access (path params, query params) |
| 51 | +- [x] Request body string access |
| 52 | +- [x] Response status code setting |
| 53 | +- [x] Response header management |
| 54 | +- [x] JSON response serialization |
| 55 | +- [x] Plain text responses |
| 56 | + |
| 57 | +--- |
| 58 | + |
| 59 | +### 📋 Planned Features |
| 60 | + |
| 61 | +#### 1. Enhanced Routing |
| 62 | +- [ ] Route wildcards (e.g., `/files/*`) |
| 63 | +- [ ] Route matching with regular expressions |
| 64 | +- [ ] Route priority/ordering control |
| 65 | +- [ ] Nested route groups |
| 66 | +- [ ] Route metadata and tagging |
| 67 | +- [ ] Automatic OPTIONS handling per route |
| 68 | + |
| 69 | +#### 2. Request Handling |
| 70 | +- [ ] Multipart form data parsing |
| 71 | +- [ ] File upload handling |
| 72 | +- [ ] Request body size limits (configurable) |
| 73 | +- [ ] Content negotiation helpers |
| 74 | +- [ ] Cookie parsing and setting |
| 75 | +- [ ] Request validation helpers |
| 76 | +- [ ] Custom body parsers (pluggable) |
| 77 | + |
| 78 | +#### 3. Response Enhancements |
| 79 | +- [ ] Response streaming API for large payloads |
| 80 | +- [ ] Request body streaming for file uploads |
| 81 | +- [ ] Template rendering support (pluggable) |
| 82 | +- [ ] Response compression (gzip, deflate, brotli) |
| 83 | +- [ ] ETag support for caching |
| 84 | +- [ ] Conditional requests (If-None-Match, If-Modified-Since) |
| 85 | +- [ ] Server-Sent Events (SSE) support |
| 86 | +- [ ] Chunked transfer encoding |
| 87 | + |
| 88 | +#### 4. Middleware Ecosystem |
| 89 | +- [ ] Configurable CORS middleware (custom origins, methods, headers) |
| 90 | +- [ ] Rate limiting middleware |
| 91 | +- [ ] Authentication middleware (JWT, Bearer, Basic Auth) |
| 92 | +- [ ] Session management middleware |
| 93 | +- [ ] Cookie parsing and management |
| 94 | +- [ ] Request ID tracking |
| 95 | +- [ ] Body parser middleware (JSON, form-urlencoded, multipart) |
| 96 | +- [ ] CSRF protection |
| 97 | +- [ ] Security headers middleware (helmet-style) |
| 98 | +- [ ] Request timeout middleware |
| 99 | +- [ ] Circuit breaker pattern |
| 100 | + |
| 101 | +#### 5. Performance & Scaling |
| 102 | +- [ ] Connection pooling |
| 103 | +- [ ] Request/response pooling |
| 104 | +- [ ] Zero-copy optimizations |
| 105 | +- [ ] HTTP keep-alive connection management |
| 106 | +- [ ] Graceful shutdown support |
| 107 | +- [ ] Health check endpoints |
| 108 | +- [ ] Metrics and monitoring hooks |
| 109 | + |
| 110 | +#### 6. Error Handling |
| 111 | +- [ ] Error recovery middleware |
| 112 | +- [ ] Detailed error responses (development mode) |
| 113 | +- [ ] Error logging integration points |
| 114 | +- [ ] Panic recovery |
| 115 | +- [ ] Structured error types |
| 116 | + |
| 117 | +#### 7. Testing & Development |
| 118 | +- [ ] Test client for integration testing |
| 119 | +- [ ] Mock request/response builders |
| 120 | +- [ ] Development mode with hot reload (external tool integration) |
| 121 | +- [ ] Request/response logging levels |
| 122 | +- [ ] Debug middleware |
| 123 | + |
| 124 | +#### 8. Security |
| 125 | +- [ ] HTTPS/TLS support |
| 126 | +- [ ] Certificate management helpers |
| 127 | +- [ ] Input sanitization helpers |
| 128 | +- [ ] SQL injection prevention utilities |
| 129 | +- [ ] XSS prevention utilities |
| 130 | +- [ ] Rate limiting by IP/user |
| 131 | +- [ ] Request size limits |
| 132 | + |
| 133 | +#### 9. Documentation & Examples |
| 134 | +- [x] Basic examples (simple server, error handling) |
| 135 | +- [x] Route grouping example |
| 136 | +- [ ] REST API example |
| 137 | +- [ ] WebSocket chat example |
| 138 | +- [ ] File upload example |
| 139 | +- [ ] Authentication example |
| 140 | +- [ ] Microservices example |
| 141 | +- [ ] Real-time SSE example |
| 142 | +- [ ] Comprehensive API documentation |
| 143 | +- [ ] Best practices guide |
| 144 | +- [ ] Migration guide from other frameworks |
| 145 | + |
| 146 | +#### 10. Ecosystem Integration |
| 147 | +- [ ] Database connection pooling patterns |
| 148 | +- [ ] ORM integration examples |
| 149 | +- [ ] Message queue integration patterns |
| 150 | +- [ ] Cache integration (Redis, Memcached) |
| 151 | +- [ ] Logging framework integration |
| 152 | +- [ ] OpenTelemetry/tracing support |
| 153 | + |
| 154 | +--- |
| 155 | + |
| 156 | +### 🎯 Future Considerations |
| 157 | + |
| 158 | +These features are being considered but not yet prioritized: |
| 159 | + |
| 160 | +- WebSocket support |
| 161 | +- HTTP/2 support |
| 162 | +- HTTP/3 (QUIC) support |
| 163 | +- GraphQL support |
| 164 | +- gRPC support |
| 165 | +- CBOR serialization support |
| 166 | +- Built-in API documentation generation |
| 167 | +- Load balancing support |
| 168 | +- Service mesh integration |
| 169 | +- Admin panel/dashboard |
| 170 | +- Plugin system architecture |
| 171 | + |
| 172 | +--- |
| 173 | + |
| 174 | +### Contributing |
| 175 | + |
| 176 | +Want to help implement a feature? Check our [CONTRIBUTING.md](CONTRIBUTING.md) guide! |
| 177 | + |
| 178 | +### Feedback |
| 179 | + |
| 180 | +Have suggestions for the roadmap? Open an issue or discussion on our [GitHub repository](https://github.com/CogitatorTech/helium). |
0 commit comments