Skip to content

dylan-smith/CheckMate2

CheckMate2

CI

A checklist management app with:

  • Backend: ASP.NET Core Web API (.NET 10) + Entity Framework Core + SQL Server
  • Frontend: React 19 + TypeScript (Vite)

Features

  • Create, edit, and delete checklists
  • Enforces unique checklist names
  • RESTful API with OpenAPI support

Prerequisites

  • .NET 10 SDK
  • Node.js (LTS recommended)
  • npm
  • SQL Server (optional — an in-memory database is used by default in development)

Local Development Setup

Backend

cd backend/CheckMate2.Api
dotnet run

The API starts at http://localhost:5269 by default. In development mode an in-memory database is used automatically (configured in appsettings.Development.json).

To use SQL Server for local development instead, set UseInMemoryDatabase to false and update the connection string in backend/CheckMate2.Api/appsettings.Development.json.

Frontend

cd frontend
npm ci
npm run dev

The frontend dev server starts at http://localhost:5173. Set the VITE_API_BASE_URL environment variable if your backend runs on a different URL.

Common Tasks

Running Backend Tests

cd backend/CheckMate2.Api.Tests
dotnet test

Linting the Frontend

cd frontend
npm run lint

Building the Frontend for Production

cd frontend
npm run build

The output is written to frontend/dist.

Previewing the Production Build

cd frontend
npm run preview

Deployment

  1. Backend — Publish the API with dotnet publish -c Release from backend/CheckMate2.Api. Deploy the output to any host that supports .NET 10 (Azure App Service, Docker, etc.). Configure the ConnectionStrings:CheckMate2 setting to point to your production SQL Server instance and set UseInMemoryDatabase to false. If the frontend will be served from a different origin than the API, also configure Cors:AllowedOrigins to include the production frontend URL(s) so the browser can call the API.

  2. Frontend — Run npm run build in frontend and serve the contents of frontend/dist with any static file host (Azure Static Web Apps, Nginx, etc.). Set VITE_API_BASE_URL to the production API URL before building. When using a different origin for the frontend, make sure the backend Cors:AllowedOrigins setting includes that frontend URL.

Project Structure

CheckMate2/
├── backend/
│   ├── CheckMate2.Api/          # ASP.NET Core Web API
│   └── CheckMate2.Api.Tests/    # xUnit backend tests
├── frontend/                    # React + TypeScript (Vite)
├── CONTRIBUTING.md
├── SECURITY.md
├── LICENSE
└── README.md

Run Playwright E2E tests

Playwright automatically starts the backend and frontend servers when tests run. Before running tests for the first time, install dependencies and the test browser:

cd frontend
npm ci
npx playwright install chromium --with-deps

Then run the tests (this builds the frontend and launches both servers automatically):

npm run test:e2e

To run tests with the interactive UI:

npm run test:e2e:ui

Azure Deployment

The CI workflow (.github/workflows/ci.yml) includes deployment jobs that run after all checks pass. Deployment only runs on pushes to main (not on pull requests).

Deployment Architecture

Component Azure Service Endpoint
Backend API Azure App Service https://<AZURE_BACKEND_APP_NAME>.azurewebsites.net
Frontend Azure Static Web Apps https://<your-static-web-app>.azurestaticapps.net

Required GitHub Variables

Variable Description
AZURE_CLIENT_ID Azure service principal client ID (for OIDC login)
AZURE_TENANT_ID Azure Active Directory tenant ID
AZURE_SUBSCRIPTION_ID Azure subscription ID
AZURE_BACKEND_APP_NAME Name of the Azure App Service for the backend
AZURE_BACKEND_URL Public URL of the backend API (e.g. https://checkmate2-api.azurewebsites.net)

Required GitHub Secrets

Secret Description
AZURE_SQL_CONNECTION_STRING SQL Server connection string for the deployed database
AZURE_STATIC_WEB_APPS_API_TOKEN Deployment token for Azure Static Web Apps

Environment

The workflow uses the production GitHub Environment for all deployments. Configure the production environment in your repository settings to enable approval gates and environment-specific secrets.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines on how to get started.

Use the provided templates when opening issues or pull requests:

Pull requests should follow the PR template checklist before requesting review.

Security

To report a security vulnerability, see SECURITY.md.

License

This project is licensed under the MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors