Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.aspfox.com/llms.txt

Use this file to discover all available pages before exploring further.

Change the default admin credentials before any production deployment. The seeded admin password is Admin123! and is the same for every scaffolded project.
1

Download the template package

After purchase you receive a download link via email. Download the .nupkg file to your machine. The file is named AspFox.Templates.1.x.x.nupkg (version number varies).Keep the file somewhere accessible — you will reference its path in the next step.
2

Install the template

From the directory where you saved the .nupkg, run:
dotnet new install ./AspFox.Templates.1.x.x.nupkg
Replace 1.x.x with the actual version in the filename. This registers the aspfox template in your local dotnet new catalog. Run it once per machine. To update to a newer version, download the new .nupkg and run this command again.
3

Scaffold your project

Replace YourProjectName with your actual project name (PascalCase, no spaces). This renames every namespace, file, and assembly reference automatically.
dotnet new aspfox -n YourProjectName
Run this from whatever directory you want the project created in.Available scaffold options:
OptionDefaultDescription
--AdminEmailadmin@example.comEmail address for the seeded admin account
--IncludeReactFrontendtrueInclude the React + TypeScript frontend
--IncludeTeststrueInclude the xUnit test project
Example with options:
dotnet new aspfox -n Acme --AdminEmail admin@acme.com
4

Navigate to your project

cd YourProjectName
5

Configure environment variables

cp .env.example .env
Open .env in your editor. At minimum, the following must be set before the application will start:
  • DATABASE_URL — filled in by Docker Compose if you use the default setup
  • REDIS_URL — same
  • JWT_PRIVATE_KEY and JWT_PUBLIC_KEY — see the next step
For a first local run, Stripe and email variables can be placeholder values. Auth and tenant features work fully without them. Billing endpoints will return errors until Stripe is configured.See the full Environment Variables reference for every variable.
6

Generate JWT RSA keys

AspFox uses RS256 (asymmetric) JWT signing. You need to generate a 4096-bit RSA key pair and base64-encode both the private and public keys.
ssh-keygen -t rsa -b 4096 -m PEM -f jwt.key -N '""'
[Convert]::ToBase64String([IO.File]::ReadAllBytes("jwt.key"))
[Convert]::ToBase64String([IO.File]::ReadAllBytes("jwt.key.pub"))
Copy the base64 output of the private key into .env as JWT_PRIVATE_KEY, and the public key as JWT_PUBLIC_KEY. Both values are single long strings with no line breaks.
Generate new keys for every environment. Do not reuse your local development keys in production.
7

Start services

make up
This runs Docker Compose with the development configuration. The first run downloads Docker images — expect 2–3 minutes. Subsequent starts take a few seconds.The following services start: PostgreSQL 15, Redis 7, the .NET API (with hot reload via dotnet watch), and the React frontend (with Vite HMR).
8

Apply migrations and seed the database

In a separate terminal (services must be running):
make migrate
make seed
make migrate applies all pending EF Core migrations to the PostgreSQL container. make seed creates the admin user and initial lookup data.
9

Open the application

Default admin credentials (seeded by make seed):
  • Email: the value of --AdminEmail (default: admin@example.com)
  • Password: Admin123!
Log in at http://localhost:5173 with the admin credentials. You will be prompted to create your first workspace (tenant) if one does not already exist.
The frontend runs at port 5173 (Vite dev server) and the backend at port 5000. Both must be running for the full application to work. The frontend proxies API requests to port 5000 automatically — you do not need to configure CORS for local development.

Next steps

Configure Stripe

Set up Stripe test mode to develop billing features locally.

Configure Email

Connect Resend to test transactional email locally.

Project Structure

Understand the codebase layout before adding your first feature.

Adding a Feature

Complete walkthrough: domain entity to React page.