93 lines
2.6 KiB
Markdown
93 lines
2.6 KiB
Markdown
# Job Info - Mode-Based Architecture
|
|
|
|
This project uses a mode-switching architecture to allow seamless switching between different application configurations.
|
|
|
|
## Architecture Overview
|
|
|
|
```
|
|
Job-Info-Test/
|
|
├── ModeSwitch/ (Orchestrator hub - controls which mode runs)
|
|
├── Mode1Test/ (Mode1Test - original application)
|
|
├── Mode2Test/ (Mode2Test - alternative configuration)
|
|
├── Monica.txt (Development persona and standards)
|
|
└── README.md (This file)
|
|
```
|
|
|
|
## Modes
|
|
|
|
### Mode1Test
|
|
The original application configuration. Runs on port 3005 when active.
|
|
- Backend: `Mode1Test/backend/server.ts`
|
|
- Frontend: `Mode1Test/frontend/`
|
|
- Standalone project with its own `package.json`
|
|
|
|
### Mode2Test
|
|
Alternative configuration (under development).
|
|
- Backend: `Mode2Test/backend/server.ts`
|
|
- Frontend: `Mode2Test/frontend/`
|
|
- Standalone project with its own `package.json`
|
|
|
|
## ModeSwitch Orchestrator
|
|
|
|
The orchestrator manages mode switching and ensures only one mode runs on port 3005 at a time.
|
|
|
|
### Starting the Application
|
|
|
|
```bash
|
|
cd ModeSwitch
|
|
bun install
|
|
bun run backend/orchestrator.ts
|
|
```
|
|
|
|
The orchestrator will:
|
|
1. Read the active mode from `ModeSwitch/activeMode.txt`
|
|
2. Kill any existing process on port 3005
|
|
3. Start the active mode on port 3005
|
|
|
|
**Orchestrator runs on port 3006 (for control/monitoring)**
|
|
**Shared mode port: 3005 (public, user-facing)**
|
|
|
|
### Switching Modes at Runtime
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3006/api/mode/switch/Mode2Test
|
|
```
|
|
|
|
Or programmatically:
|
|
```typescript
|
|
const response = await fetch('http://localhost:3006/api/mode/switch/Mode1Test', {
|
|
method: 'POST',
|
|
});
|
|
```
|
|
|
|
### Checking Current Mode
|
|
|
|
```bash
|
|
curl http://localhost:3006/api/mode
|
|
```
|
|
|
|
## Development Standards
|
|
|
|
See `Monica.txt` for complete development persona, standards, and guidelines.
|
|
|
|
Key standards:
|
|
- **Runtime:** Bun (exclusive)
|
|
- **Backend:** Hono + TypeScript
|
|
- **Frontend:** Vite + TailwindCSS + TypeScript
|
|
- **Architecture:** Modules as standalone reusable components
|
|
- **Environment:** Variables from `process.env` (no sample .env files)
|
|
- **Code:** Original rewrites, no delta markers, permanent/temporary comments
|
|
|
|
## File Structure Rules
|
|
|
|
- **Root:** Only mode folders, orchestrator folder, Monica.txt, README.md
|
|
- **Each Mode:** Self-contained with `package.json`, `backend/`, `frontend/`
|
|
- **ModeSwitch:** All mode-switching logic and orchestration
|
|
- **Modules:** Standalone folders with related code (when needed)
|
|
|
|
## Next Steps
|
|
|
|
1. Verify Test1Mode runs correctly from `oldTest/`
|
|
2. Implement Mode2Test as a new application variant
|
|
3. Test mode switching via the orchestrator API
|