A web application built for administrators of the Expenses Tracker platform.
It allows admin users to manage other users securely and efficiently.
✅ Built with ReactJS (Frontend) and ASP.NET Core Web API (Backend)
✅ Implements JWT with Refresh Token for authentication
- 🔑 Authentication: Secure login using ASP.NET Core Identity and JWT.
 - 👥 User Management: Add, update, and delete users and admin accounts.
 - 🌐 Responsive UI: Mobile-friendly UI using Bootstrap 5.
 - 📄 Logging: Structured logging with Serilog.
 
- Frontend: ReactJS, Bootstrap
 - Backend: C#, ASP.NET Core WebAPI
 - Database: MS SQL Server (with EntityFramework Core)
 - Authentication: ASP.NET Core Identity, JWT
 - Logging: Serilog
 - Packages: axios, react-router
 - Version Control: Git
 - Tools: Visual Studio Community 2022, Visual Studio Code
 
git clone https://github.com/glenvillethedev/net-react-app.gitProceed to frontend root folder
cd frontend/expenses-tracker-admin-ui/Create a .env file
VITE_API_BASE_URL=your_backend_base_urlPort number for frontend can be updated in vite.config.js
(Default port number is 3000)
export default defineConfig({
  plugins: [react()],
  server: {
    port: "3000"
  }
})Install dependencies & run front end
npm install
npm run devOpen your browser and navigate to
http://localhost:3000/login (Default)
Make sure you have the latest .NET SDK installed.
Install the necessary NuGet packages:
dotnet restoreUpdate the following settings in  appsettings.json.
- Database Connection
(note: Database should already exist since this application serves as an admin dashboard for the ExpensesTracker App.
If database is not yet created, follow the ExpensesTracker app database setup instruction:
https://github.com/glenvillethedev/asp-net-core-app#:~:text=3.%20Configure%20the%20Database) 
  "ConnectionStrings": {
    "DefaultConnection": "your_db_connection_string_here"
  }- CORS Policy
 
  "AllowedOrigins": [ 
    "your_frontend_url"
  ],- JWT Settings
 
  "JWT": {
    "Issuer": "your_backend_url",
    "Audience": "your_frontend_url",
    "SecretKey": "your_secret_key",
    "Expiration": expiration_number_minutes, // minutes
    "RefreshTokenExpiration": expiration_number_days // days
  }- Serilog Settings
 
  "Serilog": {
    ...
  }Run the Application
dotnet runOpen your browser and navigate to
https://localhost:4000/swagger (Default)
- Go to the "Login" page. (/login)
 - Enter registered email and password.
 - If success, user will be logged in.
 - User's without "Admin" role are not allowed to login.
 
[Create]
- Click on the "Add Entry" button on the navigation.
 - Fill in the required details.
 - Click on the "Add" button.
 - If success, New User should be added on the table.
 
[Retrieve]
- List of users are displayed on the table.
 - Update/Delete existing users by clicking on the Action buttons.
 
[Update]
- Click on the "Update" button on the table.
 - Update the fields you want to change.
 - Click on the "Update" button.
 - If success, Updated User should be reflected on the table.
 
[Delete]
- Click on the "Delete" button on the table.
 - Click on the "Delete" button to delete the entry.
 - If success, Deleted Entry should be removed on the table.
 
📁 net-react-app
 ├── 📁 backend/ExpensesTrackerAdmin → api
     ├── 📁 ExpensesTrackerAdmin (WebAPI)
         ├── 📁 Properties -> contains launchSettings.json file
         ├── 📁 Controllers → Controller Endpoints
         ├── 📁 logs → Serilog file logs
         ├── 📁 Middlewares → custom middlewares here
         ├── 📝 appsettings.json → Configuration settings
         ├── 🛠️ Program.cs → App Entry Point.
     ├── 📁 ExpensesTrackerAdmin.Models (Models/DTOs)
         ├── 📁 DTOs → Data Transfer Objects used in the App
         ├── 📁 Enums → Enums used in the Application
     ├── 📁 ExpensesTrackerAdmin.Repository (Repository Layer)
         ├── 📁 Entities → Database Models, DBContext
     ├── 📁 ExpensesTrackerAdmin.Services (Service Layer)
         ├── 📁 Interfaces
             ├── 📝 IService.cs -> Service Interface
         ├── 📝 Service.cs → Service Implementation
 ├── 📁 frontend/expenses-tracker-admin-ui → ui
     ├── 📁 public → static files
         ├── 📁 css → css styles
         ├── 📁 img → static images/logo
     ├── 📁 src → api endpoints
         ├── 📁 components → react components
         ├── 📁 context → global states
         ├── 📁 custom → custom files (axios)
         ├── 📁 pages → react pages
         ├── 📝 App.jsx
         ├── 📝 main.jsx
- 🎯 Search Functionality
 - 🎯 Pagination
 - 🎯 Admin Settings
 
- 🌐 GitHub: https://github.com/glenvillethedev
 - 📧 Email: glenville.work@gmail.com
 - 🛠️ LinkedIn: https://www.linkedin.com/in/glenville-maturan