Skip to content
This repository was archived by the owner on Feb 18, 2026. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ cvix/
## Key Stack

- **Frontend**: Vue 3.5, Vite, TailwindCSS 4, Pinia, Zod, Vitest, Playwright
- **Backend**: Spring Boot 3.5, Kotlin 2.2, WebFlux, R2DBC, PostgreSQL
- **Backend**: Spring Boot 4.0, Kotlin 2.2, WebFlux, R2DBC, PostgreSQL
- **Testing**: JUnit 5, Kotest, Testcontainers, MockK

## Available Skills
Expand Down
26 changes: 19 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,41 @@ Thanks for your interest! This guide summarizes how to set up the environment, r
## Requirements

- Java 21 (Temurin)
- Node.js 22 and pnpm 10
- Node.js 24.12.0 and pnpm 10+
- Docker (for Postgres/Testcontainers)
- Git

## Quick setup

The project uses a centralized `Makefile` to simplify development.

```bash
pnpm install
./gradlew --version
make prepare-env # Setup .env and config files
make install # Install Node & Gradle dependencies
make ssl-cert # Generate dev SSL certs
```

### Backend

```bash
./gradlew build
make backend-build # Build backend
make backend-run # Run backend services (Postgres, Keycloak) and application
```

### Frontend

```bash
pnpm -r run lint --if-present
pnpm -r run test --if-present
pnpm -r run build --if-present
make lint # Frontend linting
make test # Frontend unit tests
make build # Build all frontend apps
```

### Verification

Always run this command before opening a PR:

```bash
make verify-all # Full project verification (lint, test, build)
```

### Database
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ ProFileTailors is a **production-grade platform** for creating, customizing, and
- Atomic, semantic styling driven by a token-based design system

- ⚡ **Reactive, modular backend:**
- Kotlin + Spring Boot 3 (WebFlux, non-blocking I/O)
- Kotlin 2.2 + Spring Boot 4.0 (WebFlux, non-blocking I/O)
- PostgreSQL, R2DBC, ensemble of unit/integration tests
- Hexagonal (clean) architecture: domain, application, infrastructure separated like real professionals do

Expand Down Expand Up @@ -95,7 +95,7 @@ ProFileTailors is a **production-grade platform** for creating, customizing, and

### 🏗️ Backend

- 👩‍💻 Kotlin 2, Spring Boot 3 (WebFlux, reactive)
- 👩‍💻 Kotlin 2.2, Spring Boot 4.0 (WebFlux, reactive)
- 🐘 PostgreSQL (UUIDs, RLS), R2DBC, Liquibase
- 🛡️ Keycloak 26, OAuth2 Resource Server
- 🧪 JUnit5, Kotest, MockK, Testcontainers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,83 @@ description: "Guidance for contributors and developers working on the repo."

## Developer Guide

This section covers code organization, conventions, and common workflows.
This guide covers the core development workflows, project structure, and standards for the ProFileTailors monorepo.

## Monorepo Structure

ProFileTailors is organized as a full-stack monorepo, facilitating shared types and streamlined development across the entire system.

```text
├── client/
│ ├── apps/
│ │ ├── webapp/ # Vue.js 3 main application (SPA)
│ │ ├── marketing/ # Astro-based landing page
│ │ ├── blog/ # Astro-based blog
│ │ └── docs/ # Starlight-based documentation site
│ └── packages/
│ ├── ui/ # Shared Shadcn-Vue components
│ ├── utilities/ # Shared TypeScript utilities
│ └── ...
├── server/
│ └── engine/ # Spring Boot 4.0 + Kotlin backend
├── shared/ # Kotlin shared libraries
├── infra/ # Infrastructure, Docker, monitoring, SSL
└── .agents/ # AI agent configurations and workflow guides
```

## Branches and commits
## Essential Workflows

- Follow your team's branching strategy (Gitflow or similar).
- Keep commits small, focused, and descriptive.
We use a centralized `Makefile` to manage common tasks across both frontend and backend.

## Relevant structure
### Environment Setup

- `server/engine` — domain logic and services.
- `shared/` — shared libraries used across services and clients.
- `client/packages` — frontend utilities and packages.
Always start by preparing your local environment:

## Adding a new package
```bash
make prepare-env
make install
make ssl-cert
```

1. Create a new module under `shared/` or `client/packages`.
2. Define its `build.gradle.kts` (or package.json for JS packages).
3. Update `settings.gradle.kts` or workspace config if necessary.
### Development Servers

## Running local tests (examples)
- **Full stack:** `make dev` (Starts all frontend apps)
- **Main Web App:** `make dev-web` (Vue SPA on port 9876)
- **Backend:** `make backend-run` (Spring Boot + PostgreSQL + Keycloak)
- **Documentation:** `make dev-docs` (Starlight on port 4321)

- JVM tests (Gradle):
### Quality & Verification

Before opening a pull request, you **must** ensure the entire project passes verification:

```bash
./gradlew :server:engine:test --tests "*CreateWorkspaceCommandHandlerTest"
make verify-all
```

- Frontend tests (Vitest):
This command runs:
- Frontend: `biome check`, `oxlint`, TypeScript type-checking, Vitest, and builds.
- Backend: `detektAll`, JUnit 5 tests, and builds.

```bash
pnpm --filter client... test
```
## Coding Conventions

### Frontend (Vue/TypeScript)
- Use **Vue 3 Composition API** with `<script setup>`.
- **Strict TypeScript**: No `any` types.
- **Styling**: Tailwind CSS 4.
- **Linting**: Biome and oxlint.

### Backend (Kotlin/Spring Boot)
- **Hexagonal Architecture**: Maintain strict separation between domain, application, and infrastructure layers.
- **Reactive Stack**: Use WebFlux and R2DBC for non-blocking I/O.
- **Style**: 4 spaces, no wildcard imports, KDoc for public APIs.

For more detailed patterns and rules, refer to the guides in the `.agents/` directory, especially `.agents/AGENTS.md`.

## Code quality
## Testing Strategy

- Review `detekt.yml` and run `./gradlew detektAll -x test` before sending PRs.
- **Backend**: JUnit 5 + Kotest + MockK. Use Testcontainers for integration tests.
- **Frontend**: Vitest for unit/component tests, Playwright for E2E tests.

---

Add more sections (architecture, CI/CD, release process) as needed for your team.
For architecture deep-dives, check the `.agents/skills/` directory which contains specialized guides for Hexagonal Architecture, Spring Boot best practices, and more.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ProFileTailors is a production-grade platform for creating, customizing, and exp

- **Full-featured résumé generator:** Interactive web forms, dynamic previews, and fast PDF export.
- **Modern SPA frontend:** Built with Vue 3, TypeScript, and Tailwind CSS.
- **Reactive, modular backend:** Kotlin + Spring Boot 3 with a clean, hexagonal architecture.
- **Reactive, modular backend:** Kotlin 2.2 + Spring Boot 4.0 with a clean, hexagonal architecture.
- **Security-first:** OAuth2 SSO via Keycloak and strict data privacy measures.

## Goal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This guide provides the essential steps to get the ProFileTailors platform runni
Before you begin, ensure you have the following installed:

- **Java (JDK)**: Version 21 or higher
- **Node.js**: Version 24.12 or higher
- **Node.js**: Version 24.12.0 or higher
- **pnpm**: Version 10 or higher
- **Docker and Docker Compose**: For running backend services and dependencies
- **Make**: To use the simplified commands in the `Makefile`
Expand Down
Loading