When I started building backend applications with Node.js, I found myself choosing between two extremes:
Lightweight frameworks like Express that require assembling many packages yourself.
Large frameworks that provide many features but add complexity and abstraction.
After building APIs, authentication systems, real-time applications, and background-job services repeatedly, I decided to create a framework that focused on a different goal:
Reduce setup complexity without sacrificing developer control.
That project became StreetJS.
The Problem
A typical backend project often requires:
Routing
Authentication
Database integration
Validation
WebSockets
Background jobs
Configuration management
Security middleware
In many cases, developers spend hours assembling and configuring packages before writing actual business logic.
What StreetJS Tries to Solve
StreetJS focuses on:
- Consistent Architecture
Instead of every project having a different structure, StreetJS provides conventions that scale from small projects to larger applications.
@Controller('/users')
export class UsersController {
@get('/:id')
async get(ctx: StreetContext) {
return this.users.findById(ctx.params.id);
}
}
- TypeScript-First Development
TypeScript is not an afterthought.
interface CreateUserDto {
email: string;
name: string;
}
Types flow through the application from request to response.
- Built-In Realtime Support
Modern applications increasingly need live updates.
Examples:
Chat applications
Collaboration tools
Notifications
Dashboards
Multiplayer experiences
StreetJS includes WebSocket support without requiring major architectural changes.
- Flexible Database Support
Developers can start quickly with SQLite and later move to PostgreSQL as requirements grow.
This makes local development simpler while still supporting production-grade deployments.
Who Is StreetJS For?
StreetJS is designed for:
SaaS applications
Internal tools
Real-time applications
Marketplace platforms
Social applications
Startup MVPs
What Makes It Different?
The goal is not to replace every framework.
Express, Fastify, NestJS, and others are excellent tools.
StreetJS focuses on a specific developer experience:
TypeScript-first
Realtime-ready
Authentication-ready
Consistent project structure
Minimal setup
Final Thoughts
Frameworks should help developers build products faster.
StreetJS was created to reduce repetitive setup work while keeping applications maintainable and scalable.
If you're interested in exploring it:
GitHub: https://github.com/hassanmubiru/StreetJS
Documentation: https://hassanmubiru.github.io/StreetJS/
Top comments (0)