create-featurebased-architecture
v2.0.0
Published
CLI to scaffold feature-based architecture projects with Bun, Hono, React
Maintainers
Readme
create-featurebased-architecture
A CLI tool to scaffold feature-based architecture projects with Bun, Hono, and React.
Usage
npx create-featurebased-architectureOr with bun:
bunx create-featurebased-architectureTemplates
| 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 |
Feature-Based Architecture
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)
Database Setup (NeonDB)
For templates using NeonDB, run this SQL to create the users table:
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();Ollama Chatbot Tables
-- 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);Development
# Install dependencies
bun install
# Run CLI locally
bun run dev
# Build for publishing
bun run buildLicense
MIT
