Webfolio is a Maven-based monorepo containing:
- A Quarkus backend (Java)
- An Angular frontend (Angular 21, Tailwind, DaisyUI, Vitest)
The repository is structured to provide a clean separation of concerns while keeping the developer experience simple: one repository, one build system, one entrypoint for local development.
The root project is a Maven parent (pom.xml) that:
- Aggregates all modules
- Centralizes dependency and plugin management
- Keeps versions aligned across backend and frontend
-
Backend
- Quarkus application
- Java 21
- Runs in dev mode via
mvn quarkus:dev
-
Frontend
- Angular application
- Tailwind CSS + DaisyUI
- Vitest for unit testing
- Managed via npm (orchestrated by Maven plugins)
- Java 21
- Maven
- Node.js (LTS) via
nvm
macOS setup is described below.
At the root of the repository, create a .env file:
TELEGRAM_BOT_TOKEN=your_token_here
TELEGRAM_CHAT_ID=your_chat_id_hereThese variables are required for Telegram integration.
The .env file must not be committed. If needed, provide an .env.example instead.
./startup.shThis script is the canonical way to start the development environment. It ensures:
- Frontend dependencies are installed
- Angular dev server is started
- Quarkus runs in dev mode
- Both modules are wired correctly
Use this instead of starting modules manually unless you have a specific reason.
From the backend module:
mvn quarkus:devFrom the frontend module:
npm install
npm run startmvn clean installFrom the frontend module:
npm testIf Homebrew is not installed, follow the official installation instructions.
After installation:
brew updatebrew install openjdk
java --versionbrew install maven
mvn -vInstall nvm according to the official instructions, then run:
nvm install
nvm useCheck the respective versions by running:
node -v
npm -vCreate a feature branch:
git checkout -b feat/<short-description>Start the development environment:
./startup.shKeep changes focused and cohesive. Prefer small, well-scoped pull requests.