GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - fullstackproltd/AspNetCoreSpa: Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo:

BranchesTags
Open more actions menu

Latest commit

 

History

732 Commits
732 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.vscode
.vscode
 
 
src
src
 
 
tests
tests
 
 
.dockerignore
.dockerignore
 
 
.gitignore
.gitignore
 
 
AspNetCoreSpa.sln
AspNetCoreSpa.sln
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
app_offline.htm
app_offline.htm
 
 
compodoc.jpg
compodoc.jpg
 
 
db.bat
db.bat
 
 
deploy.azure.ps1
deploy.azure.ps1
 
 
deploy.heroku.ps1
deploy.heroku.ps1
 
 
docker-compose.dcproj
docker-compose.dcproj
 
 
docker-compose.override.yml
docker-compose.override.yml
 
 
docker-compose.yml
docker-compose.yml
 
 

Repository files navigation

Actions Status Web Actions Status STS Build Status Build status MIT license

Features

  • ASP.NET Core 7.0
  • Entity Framework Core 7.0
    • Both Sql Server and Sql lite databases are supported (Check installation instrcutions for more details)
  • Identity Server 4
  • Angular 15
  • Angular CLI 15
  • Secure - with CSP and custom security headers
  • SignalR
  • SASS
  • Best practices for Angular code organisation.
  • Clean Architecture inspired from Jason Taylor.
  • PWA support
  • Fast Unit Testing with Jest.
  • E2E testing with Protractor.l
  • Compodoc for Angular documentation
  • Login and Registration functionality using Identity Server implicit flow
  • Extensible User/Role identity implementation
  • Social logins support with token based authentication, using Identity Server
  • Angular dynamic forms for reusable and DRY code.
  • Swagger as Api explorer (Visit url https://127.0.0.1:5005/swagger OR whatever port visual studio has launched the website.). More details

Pre-requisites

  1. .Net 7.0 SDK
  2. Visual studio 2019 OR VSCode with C# extension
  3. NodeJs (Latest LTS)
  4. Microsoft SQL Server (Optional: If MS SQL server required instead of Sqlite during development)
  5. Docker (Optional: If application will run inside docker container)

Installation

  1. Clone the repo:

    git clone https://github.com/asadsahi/AspNetCoreSpa

  2. Change directory:

    cd AspNetCoreSpa

  3. Restore packages:

    dotnet restore AspNetCoreSpa.sln

  4. Install npm packages:

    • cd src/Presentation/Web/ClientApp:

    • npm install

  5. Start Frontend:

    • npm start
  6. Run Backend:

    • Using VSCode:

      • If you are running for the first time, install dev certificates using command:
      dotnet dev-certs https --trust
      
      • From debug menu select Web profile to run api application
      • From debug menu select STS profile to run Identity Server application
    • Using Visual Studio IDE:

      • Run Web and STS projects either individually or by setting multiple projects in solutions properties and hit F5
  7. Target either Sqlite or Microsoft SQL Server

This project supports both databases OOTB.

  • Run with Sqlite: (Already configured to quickly run the project)

    • Project is already setup with Sqlite specific database migrations
  • Run with Microsoft SQL Server:

    • Delete Migrations folder from src/Infrastructure/Infrastructure/Persistence
    • Change setting in appsettings.json called useSqLite from true to false and change Web connection string to your local Sql Server connection string
  1. Once the project is running use following test users to login:

    2 Test users: Username: [email protected] Password: P@ssw0rd! OR Username: [email protected] Password: P@ssw0rd!

    Note: For production use Identity server hosted with appropriate configuration.

Managing Migrations

Make sure you have ef core global tools installed

dotnet tool install --global dotnet-ef

Web Migrations

Using command line (from root of the project)

Create Migration

dotnet ef migrations add migrationname --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context ApplicationDbContext -o Persistence/Migrations

Update database

dotnet ef database update --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context ApplicationDbContext

Drop database

dotnet ef database drop --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context ApplicationDbContext

Localization Migrations

Using command line (from root of the project)

Create Migration

dotnet ef migrations add migrationname --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context LocalizationDbContext -o Localization/Migrations

Update database

dotnet ef database update --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context LocalizationDbContext

Drop database

dotnet ef database drop --startup-project ./src/Presentation/Web --project ./src/Infrastructure/Infrastructure --context LocalizationDbContext

Identity Migrations

Using command line (from root of the project)

Create Migration

dotnet ef migrations add migrationname --startup-project ./src/Presentation/STS --project ./src/Infrastructure/Infrastructure --context IdentityServerDbContext -o Identity/Migrations

Update database

dotnet ef database update --startup-project ./src/Presentation/STS --project ./src/Infrastructure/Infrastructure --context IdentityServerDbContext

Drop database

dotnet ef database drop --startup-project ./src/Presentation/STS --project ./src/Infrastructure/Infrastructure --context IdentityServerDbContext

Other commands

Angular component scaffolding

Note: You need to run commands from src/Presentation/Web/ClientApp directory: More information here

Angular tests - Using Jest and Angular jest preset

cd src/Presentation/Web/ClientApp

npm test

Compodoc Angular documentation

  • Steps to generate:
    • npm i compodoc -g
    • cd src/Presentation/Web/ClientApp
    • npm run compodoc
    • cd documentation
    • http-server

Compodoc documentation: alt text

### run end-to-end tests
```bash
# make sure you have your server running in another terminal (i.e run "dotnet run" command)
npm run e2e

run Protractor's elementExplorer (for end-to-end)

npm run webdriver:start
# in another terminal
npm run e2e:live

Azure Deploy

  • You can set an environment variable for azure app deployment password Set-Item -path env:AzureAppPass -value passwordhere
From powershell:
./deploy-azure.ps1

Deploy to heroku using its container service

Replace your app name where it is aspnetcorespa

  • dotnet publish -c release
  • docker build -t aspnetcorespa ./bin/release/net7.0/publish
  • heroku login
  • heroku container:login
  • docker tag aspnetcorespa registry.heroku.com/aspnetcorespa/web
  • docker push registry.heroku.com/aspnetcorespa/web Note: There is a deploy.heroku.ps1 script included with this project which automates above steps.

Deploy to Azure as App Service

Set-Item -path env:AzureAppPass -value passwordhere

From powershell:
./deploy-azure.ps1

paypal

About

Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo:

aspnetcorespa.fullstackpro.co.uk

Topics

angularangular-cliaspnetcoreaspnetcorespabest-practicescompodocefcoreglobalizationidentityserver4securityspatypescriptunit-testing

Resources

Readme
MIT license
Activity
Custom properties

Stars

1.5k stars

Watchers

135 watching

Forks

456 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.