Why I Built StreetJS Instead of Using Express or NestJS

typescript dev.to

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:

  1. 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);
}
}

  1. TypeScript-First Development

TypeScript is not an afterthought.

interface CreateUserDto {
email: string;
name: string;
}

Types flow through the application from request to response.

  1. 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.

  1. 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/

Source: dev.to

arrow_back Back to Tutorials