CLI to scaffold feature-based architecture projects with Bun, Hono, React
npm install create-featurebased-architectureA CLI tool to scaffold feature-based architecture projects with Bun, Hono, and React.
``bash`
npx create-featurebased-architecture
Or with bun:
`bash`
bunx create-featurebased-architecture
| Template | Description |
|----------|-------------|
| Blank Hono (default) | Feature-based Hono backend with NeonDB setup |
| Blank TS | Feature-based TypeScript project |
| React | Feature-based React frontend with Vite |
| User Management Backend | Complete CRUD backend for users with NeonDB |
| User Management Frontend | React frontend for user management |
| Ollama Chatbot Backend | AI chatbot backend with @langchain/ollama and NeonDB |
| Ollama Chatbot Frontend | Chat UI with react-icons for the chatbot backend |
Each feature is self-contained with its own:
- Routes (API endpoints)
- Controller (request handling)
- Service (business logic)
- Repository (data access)
- Types (TypeScript interfaces)
- Schema (validation)
For templates using NeonDB, run this SQL to create the users table:
`sql
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
email VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_users_email ON users(email);
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER update_users_updated_at
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
`
`sql
-- Conversations table
CREATE TABLE conversations (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
title VARCHAR(200) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Messages table
CREATE TABLE messages (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
conversation_id UUID NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
role VARCHAR(20) NOT NULL CHECK (role IN ('user', 'assistant', 'system')),
content TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_messages_conversation ON messages(conversation_id);
CREATE INDEX idx_conversations_updated ON conversations(updated_at DESC);
`
`bashInstall dependencies
bun install
MIT