Skip to content

Latest commit

 

History

681 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Profile Tailors

Profile Tailors Logo

Schedule smarter. Post everywhere.

Monorepo for the Profile Tailors social media management platform (marketing, dashboard, backend, shared modules, and infrastructure).

License CI Astro Node.js pnpm

Quality Gate Status Bugs Code Smells Coverage Duplicated Lines (%) Reliability Rating Security Rating Maintainability Rating codecov


Getting Started

Prerequisites

Requirement Version Install
Node.js >= 22.12.0 nodejs.org
pnpm >= 11.8.0 npm install -g pnpm
just >= 1.30 brew install just / winget install Casey.Just / cargo install just

Windows users: just runs natively on Windows. The Gradle wrapper is auto-detected (gradlew.bat in CMD/PowerShell, ./gradlew in Git Bash/WSL). Recipes that use rm -rf still require a POSIX shell — use Git Bash (included with Git for Windows) or WSL.

Install and run locally

1) Install just

  • macOS: brew install just
  • Windows: winget install Casey.Just
  • Ubuntu/Debian (recommended):
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/local/bin
just --version

Alternative Ubuntu/Debian installation methods are also documented in the repository Justfile.

2) Bootstrap the workspace

git clone https://github.com/dallay/profiletailors.com.git
cd profiletailors.com
just setup

For full onboarding and troubleshooting, see docs/getting-started.md.

just setup will:

  • copy .env.example to .env when needed,
  • install workspace dependencies with pnpm install --frozen-lockfile,
  • install Lefthook unless Git hooks are globally disabled (core.hooksPath=/dev/null, e.g. Jules).
  • apply AI agent configurations with pnpm dlx @dallay/agentsync apply.
  • run optional local tooling setup via node scripts/setup-optional-tools.mjs.

3) Start local development

just dev-frontend  # starts both Astro and Vue dev servers

Command Hub

This repo uses just as a centralized command runner. All common operations are available via just <recipe> — no need to remember pnpm, Gradle, or Docker commands separately. Run just -l to list everything.

Frontend (Astro + Vue / pnpm)

Command What it does
just dev-frontend Start both dev servers in parallel
just app Start only the Vue 3 dashboard app
just frontend-build Build the marketing site for production
just frontend-preview Preview marketing production build
just frontend-lint Lint marketing with Biome
just frontend-format Format marketing code with Biome
just frontend-check Run Astro type/content checks
just frontend-test Run marketing unit tests (Vitest)
just frontend-test-cov Run marketing unit tests with coverage
just frontend-test-e2e Run marketing E2E tests (Playwright)
just app-test-e2e-media Run app Media Library E2E tests

Backend (Gradle / Kotlin / Spring Boot)

Command What it does
just backend-build Compile and package
just backend-run Start Spring Boot (dev profile)
just backend-test-fast Run unit tests (fast: no Postgres)
just backend-test Run unit tests (pass exclude-tags)
just backend-lint Run Detekt static analysis
just backend-check Full check (tests + Detekt)
just backend-coverage Tests with JaCoCo coverage report

Infrastructure (Docker)

Command What it does
just infra-up Start Postgres + services
just infra-down Stop and remove containers
just infra-logs Tail service logs

CI Simulation

Command What it does
just ci-local Full CI pipeline simulation (fast, local-only)
just ci-full CI pipeline + Postgres BDD tests

Setup & Maintenance

Command What it does
just install Install all dependencies
just setup Full initial setup (.env + install + hooks + agentsync)
just hooks-install Install Lefthook git hooks
just clean Clean all build artifacts and caches

Overview

Development Notes

  • Frontend Apps:
    • apps/web/marketing/: Astro-based marketing site.
    • apps/web/app/: Vue 3-based dashboard application.
  • The marketing site uses Astro's built-in locale routing with English as the default locale and Spanish under /es/.
  • User-facing copy is maintained in locale files under apps/web/marketing/src/i18n/ and apps/web/app/src/i18n/.
  • Shared web assets are sourced from shared/assets/ using the @shared/assets/ import alias. Files in shared/assets/web/* are copied into dist/ at build time by the Astro build configuration.
  • The current waitlist flow is client-side only (Astro component); backend persistence is documented as planned (ADR-0011).
  • Code quality: Biome for linting and formatting in the frontend, Detekt for the backend.
  • The backend lives in server/smp/ — Spring Boot 4 with Kotlin and WebFlux (reactive).
  • SDD artifacts live in openspec/ for tracking specs, designs, and tasks.

Project Structure

profiletailors.com/
├── apps/
│   └── web/
│       ├── app/                  # Vue 3 dashboard application
│       └── marketing/            # Astro marketing site
├── server/
│   └── smp/                     # Spring Boot 4 backend (Kotlin)
├── shared/                      # Kotlin libraries + shared web assets
│   ├── assets/                  # Shared logos, icons, and web assets
│   ├── web/                     # Shared web workspace
│   ├── common/                  # Domain primitives, value objects, shared kernel
│   ├── bus/                     # Event bus abstractions
│   ├── security/                # Security primitives
│   └── ...                      # Additional shared libraries
├── tools/
│   └── compliance/              # Compliance tooling workspace
├── .agents/                     # Agent tooling config and skills
├── .devcontainer/               # VS Code dev container configuration
├── .github/workflows/           # CI and automation
├── docs/                        # Architecture and security docs
├── openspec/                    # SDD artifacts
├── CONTRIBUTING.md
├── CLA.md
├── LICENSE
└── README.md

Architecture

Profile Tailors follows a hexagonal architecture with bounded contexts from Domain-Driven Design. The backend is built as a modular monolith using Spring Boot 4, Kotlin, and reactive programming.

📐 View C4 Architecture Models

  • System Context — Big picture, external dependencies
  • Container — Deployable units, technology stack
  • Component — Internal structure, bounded contexts
  • Code — Implementation patterns, class design
  • Summary — Executive summary and roadmap

Key Architectural Patterns:

  • Hexagonal Architecture (Ports & Adapters)
  • Domain-Driven Design (Bounded Contexts)
  • CQRS (Command Query Responsibility Segregation)
  • Reactive Programming (Kotlin coroutines + R2DBC)
  • Modular Monolith (Spring Modulith)

Contributing

Contributions are welcome. Before opening a pull request:

  1. Read CONTRIBUTING.md.
  2. Open an issue or discussion first for non-trivial changes.
  3. Sign the CLA.md when prompted on your first PR.
  4. Verify your changes locally from apps/web/marketing/.

We use Conventional Commits:

feat(scope): short description
fix(scope): short description
docs(scope): short description
chore(scope): short description

Examples:

feat(marketing): refine hero waitlist flow
fix(i18n): correct spanish locale switch label
docs(readme): refresh repository onboarding

Security

If you discover a security issue, do not open a public issue.

Contact: security@profiletailors.com


Support


License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

See LICENSE for the full text.

Source offer (AGPL-3.0 § 13): users who interact with Profile Tailors over a network are entitled to the corresponding source code. The canonical source is available at github.com/dallay/profiletailors.com. Deployed releases are tagged; the running version is exposed via /actuator/info.

For licensing questions, commercial use, or CLA enquiries see docs/architecture/adr/0012-agpl-commercial-strategy.md and CLA.md.


Built by the Profile Tailors team.

About

Schedule smarter, post everywhere.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages