feat: initialize landing application with Vite and Mantine configuration

This commit is contained in:
Firman Ramdhani
2026-04-06 12:11:17 +07:00
parent 988826ac8e
commit 8c7b6d3017
16 changed files with 307 additions and 43 deletions
+33 -10
View File
@@ -28,6 +28,7 @@ The monorepo is organized into **Apps** (deployable applications) and **Packages
.
├── apps/
│ ├── web/ # Main React Application (Vite + TypeScript)
│ ├── landing/ # Public Promotional SPA (Vite + TypeScript)
│ ├── desktop/ # Electron Desktop Wrapper (electron-vite)
│ └── docs-dev/ # Component Documentation & Playground (Storybook)
@@ -71,12 +72,16 @@ This repository uses **Turborepo** to orchestrate tasks efficiently. All command
### Development
| Command | Description |
| -------------------- | --------------------------------------------------------------------------- |
| `pnpm dev` | Start **all applications** (`web` and `docs-dev`) in parallel |
| `pnpm dev:web` | Start only the **Main Web App** (usually at `http://localhost:5173`) |
| `pnpm dev:docs-dev` | Start **Storybook** for UI development (usually at `http://localhost:6006`) |
| `pnpm dev:desktop` | Start the **Web App + Electron** in parallel for desktop development |
| Command | Description |
| -------------------- | ---------------------------------------------------------------------------------- |
| `pnpm dev` | Start **all applications** (`web` and `docs-dev`) in parallel |
| `pnpm dev:web` | Start only the **Main Web App** (strictly at `http://localhost:5173`) |
| `pnpm dev:landing` | Start the **Public Landing App** (strictly at `http://localhost:3000`) |
| `pnpm dev:docs-dev` | Start **Storybook** for UI development (strictly at `http://localhost:6006`) |
| `pnpm dev:desktop` | Start the **Web App + Electron** in parallel for desktop development |
> [!NOTE]
> **Port Topology**: `electron-vite` dynamically allocates a background port (usually `5174`) for its internal renderer shell during `pnpm dev:desktop`. We strictly isolate `web` (`5173`) and `landing` (`3000`) onto separate port ranges to prevent race conditions during parallel execution.
### Building & Quality
@@ -84,6 +89,7 @@ This repository uses **Turborepo** to orchestrate tasks efficiently. All command
| --------------------- | ------------------------------------------------------- |
| `pnpm build` | Build all apps and packages using Turbo cache |
| `pnpm build:web` | Build only the web application |
| `pnpm build:landing` | Build only the landing page |
| `pnpm build:docs-dev` | Build only the docs-dev application |
| `pnpm build:desktop` | Build the web app, then compile the Electron app |
| `pnpm test` | Run unit tests (Vitest) across all packages |
@@ -172,7 +178,24 @@ The **Electron desktop wrapper** that embeds `apps/web` for native desktop exper
---
### 3. `apps/docs-dev` (Storybook)
### 3. `apps/landing`
The **public promotional website** — a standalone SPA for the company profile and marketing pages.
* Deployed independently to the web (e.g., Vercel) — no interaction with Electron
* Consumes shared UI components from `@repo/ui` and utilities from `@repo/utils`
* Locked to port **3000** (`strictPort: true`) — evacuated from the `517x` range to avoid `electron-vite` port collisions
**Tech Stack**:
* React
* Vite
* TypeScript
* Tailwind CSS v4
---
### 4. `apps/docs-dev` (Storybook)
An isolated environment for developing and documenting UI components.
@@ -181,7 +204,7 @@ An isolated environment for developing and documenting UI components.
---
### 4. `packages/utils`
### 5. `packages/utils`
Shared business logic and reusable utility modules that can be consumed across multiple applications. Fully tested using Vitest.
@@ -189,7 +212,7 @@ This package is intended to hold non-UI, cross-cutting logic such as date/time h
---
### 5. `packages/ui`
### 6. `packages/ui`
Shared UI component library (Buttons, Inputs, Cards, Layouts).
@@ -198,7 +221,7 @@ Shared UI component library (Buttons, Inputs, Cards, Layouts).
---
### 6. `packages/configs`
### 7. `packages/configs`
Single source of truth for tooling configuration.