Estimated time: ~2 hours from purchase to a fully running local instance.
Before you start, make sure the following tools are installed on your machine:
After completing your purchase you will receive a private repository invitation. Accept it and clone the repo:
git clone https://github.com/harosoft-com/<your-project>.git
cd <your-project>Copy the provided example environment file and fill in your values:
cp .env.example .env
# Open .env in your editor and set:
# DB_PASSWORD, JWT_SECRET, APP_URL, etc.A single Docker Compose command starts the database, backend API, and frontend together:
docker compose up --buildOnce all containers are healthy (usually 60–90 seconds), open http://localhost:4200 in your browser.
On first launch the database is automatically migrated. Run the seed command to create the default roles and an initial admin account:
docker compose exec api dotnet run --seedYour admin credentials are printed to the console. Change them immediately after first login.
Navigate to http://localhost:4200/login, log in with the seeded admin account, and confirm you can see the dashboard. That's it — you're running!
The Admin Panel is the control center of your HaroFlow platform. It is accessible only to users who have been assigned the Admin or SuperAdmin role.
Log in with an admin account and click the Admin entry in the left-hand navigation menu. Non-admin users will not see this menu item — it is hidden by the role-based access control (RBAC) system.
The main dashboard surface gives you a real-time snapshot of your platform:
Under Admin → Users you can create, edit, disable, or delete user accounts. You can also:
HaroFlow ships with three built-in roles: User, Admin, and SuperAdmin. You can define additional roles and assign fine-grained permissions through Admin → Roles. Permissions are enforced on both the API (middleware) and the UI (route guards).
Admin → Settings exposes application-level configuration such as branding (logo, colours), email provider, feature flags, and third-party integrations. Changes take effect without a restart.
Every significant action performed by any user is logged under Admin → Audit Log. Entries include the actor, action, affected resource, and timestamp — giving you a clear trail for compliance and debugging.
HaroFlow provides a full user lifecycle out of the box — registration, email verification, profile management, and account deletion.
Public registration can be enabled or disabled from Admin → Settings. When enabled, visitors can create an account at /register. Email verification is sent automatically.
Set REGISTRATION_MODE=invite in your .env to restrict sign-ups. Admins can then send invitation links from the Admin Panel — only users with a valid invite token can register.
Each user has a profile page at /account where they can update their display name, avatar, notification preferences, and change their password.
Security is built into the foundation, not bolted on afterwards.
Access tokens are short-lived (15 minutes by default). Refresh tokens are HTTP-only cookies that rotate on each use, preventing token theft from client-side JavaScript.
Every API endpoint is decorated with [Authorize(Roles = "...")] attributes. The Angular frontend enforces the same rules via route guards — unauthenticated or under-privileged users are redirected automatically.
Passwords are hashed with bcrypt (cost factor 12). You can configure minimum length and complexity rules in Admin → Settings.
Never commit your .env file. In production, inject secrets via your cloud provider's secret manager or Docker Swarm secrets.
Use docker compose up as described in the Installation section. Hot-reload is enabled for both the Angular frontend and the .NET API in development mode.
The recommended setup is a Linux server (Ubuntu 22.04+) with Docker installed. Point your domain at the server, configure an HTTPS reverse proxy (Nginx or Caddy), and run:
docker compose -f docker-compose.prod.yml up -d A production-ready docker-compose.prod.yml with Nginx and Let's Encrypt is included in the repository.
HaroFlow runs on any cloud that supports Docker: AWS EC2/ECS, GCP Compute/Cloud Run, Azure Container Instances, DigitalOcean Droplets, Hetzner, and more. No vendor lock-in — if it runs Docker, it runs HaroFlow.
The API is stateless — scale horizontally by adding replicas behind a load balancer. The PostgreSQL database can be promoted to a managed service (RDS, Cloud SQL, etc.) by updating the connection string in .env.
The codebase is structured to be extended with AI tools like Cursor and GitHub Copilot. Every module follows consistent patterns so the AI has enough context to generate correct code on the first try.
Pages live in src/app/pages/. Each page is a standalone component — add a new folder, create the component, and register the route in app.routes.ts. The Material Design system and Tabler Icons are pre-configured.
Follow the Controller → Service → Repository pattern used throughout. Add a new entity, create a migration with EF Core, and expose it via a new controller. The auto-generated Swagger UI at /swagger documents the API as you build.
Global design tokens (colours, spacing, typography) are defined in src/styles.scss. Override the Material palette variables to match your brand without touching component styles.
If you get stuck, our team is happy to jump in. Reach us via the Contact page or [email protected]. Customisation services are also available — we can build new features for you directly.