Overall Structure
myapp/ - Sonamu monorepo rootnode_modules/packages/api/ - Backend API serverweb/ - Frontend web applicationGITIGNORE
.gitignoreYAML
pnpm-lock.yamlYAML
pnpm-workspace.yaml - Workspace and dependency catalogMD
README.md - Project documentation
pnpm Workspace
The rootpnpm-workspace.yaml manages packages and common dependency versions:
pnpm-workspace.yaml
API Directory (Backend)
Root Files
packages/api/src/ - Source codedatabase/ - Database related filesJSON
package.json - Dependencies and scriptsTS
vitest.config.ts - Test configurationJSON
tsconfig.json - TypeScript configurationJSON
tsconfig.schemas.json - Schema generation configJSON
tsconfig.types.json - Type generation configTS
custom-sequencer.ts - Test sequencerSWCRC
.swcrc - SWC compiler configurationENV
.env - Environment variables (auto-generated)
Key File Descriptions
Key File Descriptions
package.json
- Backend dependency management
- npm scripts:
dev,build,test,docker:up/down,dump,seed, etc.
- Vitest test configuration
- Sonamu-optimized settings via
getSonamuTestConfig()function - Coverage, reporter, sequencer configuration
- Main TypeScript compiler configuration
tsconfig.schemas.json: Dedicated for Zod schema generationtsconfig.types.json: Dedicated for type definition generation
- Database connection info (DB_HOST, DB_PORT, DB_USER, DB_PASSWORD)
- Project configuration variables (DATABASE_NAME, CONTAINER_NAME, PROJECT_NAME)
- Auto-generated when running
pnpm create sonamu
src/ Directory
packages/api/src/TS
index.ts - Server entry pointTS
sonamu.config.ts - Sonamu configuration fileapplication/ - Per-entity folders (auto-generated){entity}/JSON
{entity}.entity.json - Entity definitionTS
{entity}.model.ts - Business logicTS
{entity}.types.ts - Types + Zod schemasTS
{entity}.model.test.ts - Tests (optional)TS
sonamu.generated.ts - Base schemas (auto-generated)i18n/ - InternationalizationTS
ko.ts - Korean translationsTS
en.ts - English translationsmigrations/ - DB migration filestesting/ - Test configurationTS
global.ts - Global test setupTS
fixture.ts - Fixture managementTS
setup-mocks.ts - Mock setuptypings/ - Type definitionsTS
sonamu.d.ts - Sonamu global typesTS
fastify.d.ts - Fastify extension typesutils/ - Utility functionsTS
subset-loaders.ts - Subset loaders
Entity File Creation ProcessFiles in the
application/{entity}/ folder are created when you create an entity through Sonamu UI and scaffold:- .entity.json: Auto-generated when defining entity in Sonamu UI
- .model.ts: Generated via
pnpm scaffold modelor Sonamu UIβs Scaffolding tab - .types.ts: Auto-generated when saving entity
- .model.test.ts: Generated via
pnpm scaffold model_testor Sonamu UIβs Scaffolding tab (optional)
application/ folder is empty. The folder is created when you create your first entity.Key Directory Descriptions
Key Directory Descriptions
application/
- Auto-created when creating the first entity
- Separate directory for each entity
- Example:
Userentity βapplication/user/directory
- Entity definition file
- Created in Sonamu UI
- Source of database schema
- Business logic implementation
- API endpoint definitions (
@apidecorator) - File you write directly
- TypeScript type definitions
- Zod validation schemas
- Auto-generated but extensible
- Shared with frontend
- Auto-generated Base schemas for all entities
- Enum types and label definitions
- Do not modify directly
- Internationalization translation files
ko.ts: Korean,en.ts: Englishsd.generated.tsis auto-generated when adding entities
- DB migration files generated by Sonamu UI
- Run with
pnpm sonamu migrate run
- Vitest test environment configuration
global.ts: Usesexport { setup } from "sonamu/test"pattern- Fixture data management
Learn More - Entity Files
- Defining Entities - How to write entity.json
- Creating Models - model.ts writing guide
- Type System - Understanding types.ts
- What Gets Generated - Which files are auto-generated
- Writing Tests - Test file structure
database/ Directory
packages/api/database/YML
docker-compose.yml - PostgreSQL container configurationfixtures/SH
init.sh - Database initialization scriptdumps/ - Data dump filesscripts/SH
dump.sh - Data backup scriptSH
seed.sh - Data restore scriptKey File Descriptions
Key File Descriptions
docker-compose.yml
- PostgreSQL + pgvector image
- Container name, port, environment variable configuration
- Run with
pnpm docker:up
- Database initialization shell script
- Installs pgvector extension and creates databases
- Creates databases using environment variables (
DATABASE_NAME,_fixture,_test) - Auto-generated when running
pnpm create sonamu
- SQL files generated by
pnpm dumpcommand - Data backup storage
dump.sh: Backs up current DB data to dumps/seed.sh: Restores data from dumps/ to DB
Learn More - Configuration Files
- sonamu.config.ts Settings - Overall project configuration
- Database Configuration - DB connection and settings
- Server Configuration - Fastify server settings
- TypeScript Configuration - Compiler options
- Environment Variables - .env file management
Web Directory (Frontend)
Root Files
packages/web/src/ - Source codeHTML
index.html - HTML entry pointJSON
package.json - Dependencies and scriptsTS
vite.config.ts - Vite configurationTS
tailwind.config.ts - Tailwind CSS configurationJSON
tsconfig.json - TypeScript configurationJSON
tsconfig.node.json - Node environment configENV
.sonamu.env - Environment variables
Key File Descriptions
Key File Descriptions
vite.config.ts
- Vite development server configuration
- TanStack Router, Tailwind CSS v4, unplugin-icons plugins
- API proxy settings (
/apiβhttp://localhost:1028) - SSR configuration included
- Tailwind CSS v4 configuration
- API server connection information
API_HOST,API_PORTsettings
src/ Directory
packages/web/src/TSX
entry-client.tsx - Client entry pointTSX
entry-server.generated.tsx - SSR entry point (auto-generated)TSX
App.tsx - Root componentTS
routeTree.gen.ts - Route tree (auto-generated)routes/ - TanStack Router based pagesTSX
__root.tsx - Root layoutTSX
index.tsx - Home pageservices/ - API services (auto-generated){entity}/ - Per-entity servicesTS
{entity}.service.tsTS
sonamu.generated.tsTS
sonamu.shared.tsTS
services.generated.tscontexts/ - React ContextTSX
SonamuContext.tsx - Sonamu Provideri18n/ - InternationalizationTS
ko.tsTS
en.tsadmin-common/ - Common componentsTSX
ApiLogViewer.tsxcomponents/ - UI componentsstyles/ - Style filesTS
vite-env.d.ts - Vite type definitionsKey Directory Descriptions
Key Directory Descriptions
routes/
- TanStack Router based file system routing
__root.tsx: Global layout- Filenames map to URL paths
- Service layer for communicating with the API server
- Auto-generated for each entity
- TanStack Query integration support
- React Context Providers
- SonamuContext: Global state management
- Frontend internationalization translation files
- Synchronized with APIβs i18n
- Reusable common components
- Debugging tools like ApiLogViewer
Learn More - Frontend
- How Services Work - Auto-generation mechanism
- Using Services - How to call APIs
- Shared Types - Backend-frontend type synchronization
Example File Structure After Creating an Entity
When you create a User entity, the following structure is created:packages/api/src/application/user/JSON
user.entity.json - Created in Sonamu UITS
user.model.ts - Manually writtenTS
user.types.ts - Auto-generated (extensible)TS
user.model.test.ts - Manually written (optional)TS
sonamu.generated.ts - Auto-updatedpackages/api/src/migrations/SQL
20250106120000_create_user.sql - Auto-generatedpackages/web/src/services/user/TS
user.service.ts - Auto-generated

Role of Each File

Auto-generated vs Manually Written -
.entity.json: Written in Sonamu UI - .model.ts:
Manually written - .types.ts: Auto-generated but extensible - sonamu.generated.ts:
Auto-generated - do not modify - {entity}.service.ts: Auto-generated - do not modifyLearn More - Per-File Guides
- Defining Entities - How to write entity.json
- @api Decorator - Defining APIs in model.ts
- Entity Types - Using types.ts
- Generated Types - Understanding sonamu.generated.ts
Key Work Locations During Development
| Task | Location | Method |
|---|---|---|
| Entity Definition | packages/api/src/application/{entity}/{entity}.entity.json | Sonamu UI |
| Business Logic | packages/api/src/application/{entity}/{entity}.model.ts | Manual writing |
| Custom Types | packages/api/src/application/{entity}/{entity}.types.ts | Manual extension |
| API Endpoints | @api decorator in Model file | Manual writing |
| Database Config | packages/api/src/sonamu.config.ts | Manual writing |
| Server Config | packages/api/src/sonamu.config.ts | Manual writing |
| Writing Tests | packages/api/src/application/{entity}/{entity}.model.test.ts | Manual writing |
| Page Components | packages/web/src/routes/ | Manual writing |
| Common Components | packages/web/src/admin-common/ | Manual writing |