A full-stack application with an Angular client and .NET Web API server.
Before you begin, ensure you have the following installed on your system:
-
Node.js (v18 or higher)
- Download from: https://nodejs.org/
- Verify installation:
node --version
-
.NET 8.0 SDK
- Download from: https://dotnet.microsoft.com/download
- Verify installation:
dotnet --version
-
Git
- Download from: https://git-scm.com/
- Verify installation:
git --version
-
Visual Studio Code (Recommended)
- Download from: https://code.visualstudio.com/
-
SQL Server (or SQL Server Express)
- Required for the database backend
git clone https://github.com/shashank319/CNPortal.gitcd CNPortalcd clientnpm installnpm startThe Angular client will start on http://localhost:4200 (default)
Open a new terminal window and follow these steps:
cd CNPortal/server/CNPortalAPIdotnet restore- Open
appsettings.jsonorappsettings.Development.json - Update the connection string to match your SQL Server configuration
dotnet ef database updatedotnet runThe .NET API will start on http://localhost:5000 or https://localhost:5001 (default)
-
Terminal 1: Run the Angular client
cd CNPortal/client npm start -
Terminal 2: Run the .NET API server
cd CNPortal/server/CNPortalAPI dotnet run -
Open your browser and navigate to http://localhost:4200
CNPortal/
├── client/ # Angular frontend
│ ├── src/ # Source files
│ └── package.json # Node dependencies
├── server/ # .NET backend
│ └── CNPortalAPI/ # API project
│ ├── Controllers/ # API controllers
│ ├── Models/ # Data models
│ ├── DTOs/ # Data transfer objects
│ └── Migrations/ # Database migrations
└── README.md
- Client: If port 4200 is in use, run
npm start -- --port 4201 - Server: If port 5000 is in use, update the port in
Properties/launchSettings.json
- Verify SQL Server is running
- Check the connection string in
appsettings.json - Ensure the database exists or migrations have been applied
- Angular 19
- Angular Material
- TypeScript
- RxJS
- .NET 8.0
- Entity Framework Core
- SQL Server
- JWT Authentication
- BCrypt for password hashing