React-Dotnet Frewaork Sekelon
Once upon a time, people maintinaed "skeleton" repos they could clone to quickly jumpstart new projects. Why? It was quick, free and it worked.
A. Always. B. Be. C. Cognitivaly TokenWoxxxening
This is a full-stask project jumpstarter with:
.NET backend
React/Vite frontend
.Net
Five CRUD endpoints return correct status codes:
201 with a proper Location header 400 on invalid email, 409 on duplicate, 204 then 404 on delete), 150 requests to /v1/info yielded exactly 100 successes and the rest 429, and 40 requests to /health all returned 200 while that window was exhausted.
Prerequisites
Backend
From the repository root:
cd backend
dotnet run
The API runs at http://localhost:5231. Swagger UI is available in Development at http://localhost:5231/swagger.
Skeleton endpoints:
GET /health— liveness check, exempt from rate limitingGET /v1/info— app name, version, environment, and server timestampGET|POST /v1/users,GET|PUT|DELETE /v1/users/{id}— placeholder CRUD over the in-memory repository
Requests are rate limited per client IP using the RateLimiting section of
appsettings.json, and allowed CORS origins come from the Cors section. Storage is
selected by Persistence:Provider, which currently supports InMemory only; data is
lost on restart until a real provider is registered in
backend/Data/PersistenceServiceCollectionExtensions.cs.
Frontend
From the repository root:
cd frontend
npm install
npm run dev
The app runs at http://localhost:3000.
Copy .env.example to .env.development (or .env.local) if you need to customize the API URL:
VITE_API_BASE_URL=http://localhost:5231
Running both
Start the backend and frontend in separate terminals. The backend CORS policy allows requests from http://localhost:3000 by default; change Cors:AllowedOrigins in backend/appsettings.json to add more.
Project structure
backend/ ASP.NET Core Web API
frontend/ React + Vite + TypeScript SPA