• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language
    HTML
  • License
    MIT License
  • Created almost 2 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Codespaces template for building a .NET project

Open in GitHub Codespaces

.NET (Blazor) Portfolio Site with GitHub Codespaces

Create, customize and deploy your own portfolio website in minutes.

In this template repository we have the development environment and base set and ready to go. So that you can immediately launch the Codespaces to customize with no setup.

  • Who is this for? Anyone looking to create a portfolio site, learn web development, or test out Codespaces.
  • How much experience do you need? Zero. You decide how much you want to customize based on your experience, and time available.
  • Tools needed: None. No need to install anything! All you need is a web browser.
  • Prerequisites: None. This template includes your development environment and deployable web app for you to create your own site.

About this portfolio template

In this "choose your own adventure" template portfolio, we have a Blazor based web application ready for you to easily customize and deploy using only your web browser.

Blazor WebAssembly profile web application

Quick Start

  1. Click the Use this Template button

    Use this Template

  2. Select the repository owner (e.g. your GitHub account)

  3. Enter a unique name for your new repository

  4. Click the Code button

  5. Click Create Codespace on main button

  6. Customize your portfolio site

  7. Deploy your site

🎥 To learn more about Codespaces, watch our video tutorial series

Codespaces Tutorial


🗃️ .NET (Blazor) Portfolio template

This repo is a GitHub template to build a .NET personal portfolio frontend web application using the Blazor WebAssembly framework. The goal is to give you a template to you can immediately utilize to create your own website through Codespaces.

The repo contains the following:

  • /.devcontainer
    • .devcontainer/Dockerfile: Configuration file used by Codespaces to determine operating system and other details.
    • .devcontainer/devcontainer.json: Configuration file used by Codespaces to configure Visual Studio Code settings, such as the enabling of additional extensions.
    • .devcontainer/on-create.sh: Configuration file used by Codespaces to install additional tools, such as PowerShell.
  • /src: Blazor WebAssembly project to build your portfolio site.
  • .editorconfig: Settings for EditorConfig that helps maintain consistent coding styles in Codespaces.
  • global.json: Settings for the Blazor WebAssembly app to avoid using pre-released .NET version.
  • swa-cli.config.json: Settings for Azure SWA CLI to run the Blazor WebAssembly app on your Codespaces.
  • MyPortfolio.sln: The solution file that contains the Blazor WebAssembly application project.

🚀 Getting started

This portfolio site project is filled with sample data so that you can immediately open Codespaces, see it running, and deploy at any point.

Your development environment is all set for you to start. Based on our .NET Codespaces Template, here is what's already setup and ready for you to use:

  • Simple Blazor WebAssembly application with components for each section of the portfolio site
  • SWA CLI in place to build your site when deploying
  • Code linting and formatting using EditorConfig for code consistency.

Create your portfolio

  1. Create a repository from this template. Use this create repo link. Select the repository owner, provide a name, a description if you'd like and if you'd like the new repository to be public or private.

  2. Navigate to the main page of the newly created repository.

  3. Under the repository name, use the Code drop-down menu, and in the Codespaces tab, select "Create codespace on main".

    Create codespace
  4. Wait as GitHub initializes the Codespaces.

    Codespaces initializing
  5. When complete you will see your Codespaces load with a terminal section at the bottom. Here you will see dotnet restore && dotnet build executing. When complete you will return to the terminal prompt where you can run the web application by executing: swa start.

    When the web application is started you will see a prompt telling you it started successfully on port 4280, and you can open that site within your browser:

    Web application started on port 4280

✨ Customize your site in 4 steps

This project is built to be easily customizable. Each section of the site is a separate component, and your information needs to be set in only one spot. This is not only for ease of updating, but so you can see how prop values are passed to React components.

For each step, open the project in Codespaces, then you can make and commit your changes while within your Codespaces.

See Using source control in your codespaces for more Codespaces source control how-tos

1️⃣ Add your details and social media accounts

Open /src/BlazorApp/wwwroot/sample-data/siteproperties.json. This is a JSON object that hold the key value pairs needed to customize your name, title, email, and social media accounts.

{
  "name": "Alexandrie Grenier",
  "title": "Web Designer & Content Creator",
  "email": "[email protected]",
  "gitHub": "microsoft",
  "devDotTo": null,
  "instagram": "microsoft",
  "linkedIn": "satyanadella",
  "medium": "",
  "twitter": "microsoft",
  "youTube": "microsoft",
};

Update to the name and title you'd like displayed at the top of your site.

Optional values are email address and social accounts. These are used in the Footer component. If any item is not included in the list or set to an empty string ("") it will not display the icon and link.

2️⃣ Update images

This portfolio site includes 3 images: top section background, "About me" background and portfolio section (desk). These can be any landscape sized images of your choosing from your own collection, or found that have a license allowing you to use without attribution.

A couple possible sites to find photos are Pixabay and Unsplash. Photos, illustrations, vectors, your choice! When you find your images, save each one to /src/BlazorApp/wwwroot/images with a short, meaningful file name.

Open /src/BlazorApp/wwwroot/sample-data/heroimages.json and update images with your preferred ones, as well as the alt text for each image:

[
  {
    // Home component
    // section at top of the page, main image you will see when site loads (woman standing by server wall in sample)
    "name": "home",
    "src": "images/server-wall.jpg",
    "alt": "woman holding laptop standing by server room with glass wall"
  },
  {
    // About me component
    // background behind the detailed "about me" section (abstract mosaic in sample)
    "name": "about",
    "src": "images/mosaic.svg",
    "alt": "purple and blue abstract background"
  },
  {
    // Portfolio component
    // image highted in left hand side of section (design desk photo in sample)
    "name": "portfolio",
    "src": "images/design-desk.jpeg",
    "alt": "desktop with books and laptop"
  }
]

3️⃣ Add your "about me"

The about section helps to give people a bit more information about your skills and passions. Open /src/BlazorApp/wwwroot/sample-data/aboutme.json and update those 3 properties:

  • description: short sentence or two describing yourself, career goal, and/or passions
  • skillsList: an array of your skills to list on the site, can be as many or little as you wish
  • detailOrQuote: longer block for you to add more detail about yourself, or even a quote you like

4️⃣ Add items you've worked on and detail text

This section to update is portfolio, where you highlight items you've worked on. These would be articles, videos, logo designs, GitHub projects, anything that highlights you!

Open /src/BlazorApp/wwwroot/sample-data/projects.json that is a JSON array. Each item you want to highlight needs: title, description, and URL.

The sample design has 4, but the number you include is up to you.

[
  {
    "title": "10 Things To Know About Azure Static Web Apps 🎉",
    "description": "Collaboration to create a beginner friendly article to help explain Azure Static Web Apps and tooling to get started.",
    "url": "https://dev.to/azure/10-things-to-know-about-azure-static-web-apps-3n4i"
  },
  {
    "title": "Web Development for Beginners",
    "description": "Contributed sketch note imagery to accompany each lesson. These help provide visual representation of what is being taught.",
    "url": "https://github.com/microsoft/web-dev-for-beginners"
  },
  {
    "title": "My Resume Site",
    "description": "Created from Microsoft's resume workshop and deployed to GitHub pages. Includes my experience and design abilities.",
    "url": "https://github.com/microsoft/workshop-library/tree/main/full/build-resume-website"
  },
  {
    "title": "GitHub Codespaces and github.dev",
    "description": "Video interview to explain when to use GitHub.dev versus GitHub Codespaces, and how best to use each tool.",
    "url": "https://www.youtube.com/watch?v=c3hHhRME_XI"
  }
]

🏃 Deploy your web application

Project includes the setup needed for you to deploy free to both Azure Static Web Apps and GitHub Pages.

Azure Static Web Apps

Azure Static Web Apps is Microsoft's hosting solution for static sites (or sites that are rendered in the user's browser, not on a server) through Azure. This service provides additional opportunities to expand your site through Azure Functions, authentication, staging versions and more.

You'll need both Azure and GitHub accounts to deploy your web application. If you don't yet have an Azure account you can create it from within during the deploy process, or from below links:

With your project open in Codespaces:

  1. Click Azure icon in the left sidebar. Log in if you are not already, and if new to Azure, follow the prompts to create your account.

  2. From Azure menu click "➕" sign and then choose "Create Static Web App".

    Create Static Web App
  3. If you are not logged into GitHub you will be prompted to log in. If you have any pending file changes you will then be prompted to commit those changes.

  4. Set you application information when prompted:

    1. Name for Static Web App: enter the name for the Static Web App. Default to your GitHub repository name.
    2. Region: pick the one closest to your region
    3. Project structure: select "Blazor"
    4. Location of application code: enter /src/BlazorApp
    5. Output location: enter wwwroot
  5. When complete you will see notification at the bottom of your screen, and a new GitHub Action workflow will be added to your project. If you click "Open Action in GitHub" you will see the action that was created for you, and it is currently running.

🤩 Bonus: Setup a custom domain for your Azure Static Web App

GitHub Pages

GitHub Pages allows you to host websites directly from your GitHub repository. This project is already set up for you to get your portfolio deployed to GitHub pages with minimal steps.

On your GitHub repository:

  1. Go to the "Settings" tab and navigate to the "Pages" menu.

  2. Under the Build and deployment section, select the source to GitHub Actions.

    Choose GitHub Actions for deployment to GitHub Pages
  3. Ensure your GitHub Pages visibility to Public.

  4. Run a GitHub Action workflow by pushing code or manually invoke it.

    Invoke GitHub Actions
  5. Visit your GitHub Pages.

    Visit GitHub Pages

🤩 Bonus: Setup a custom domain for your GitHub pages site


🏆 Challenges

Below are 4 additional ways you can continue to customize your portfolio site and learn some Codespaces, CSS, HTML and JavaScript along the way.

  1. Customize your Codespaces
  2. Update to smooth scroll to a section
  3. Animate the desk photo
  4. Add a new section

1. Customize your Codespaces

Your environment comes with preinstalled extensions. You can change which extensions your Codespaces environment starts with, here's how:

  1. Open file .devcontainer/devcontainer.json and locate the following JSON element extensions

    "extensions": [
      "GitHub.copilot",
      "GitHub.copilot-chat",
      "GitHub.copilot-labs",
      "ms-dotnettools.csharp",
      "ms-vscode.PowerShell",
      "ms-vscode.vscode-node-azure-pack",
      "VisualStudioExptTeam.vscodeintellicode"
    ]
  2. Let's add the indent-rainbow extension. To do this, go to the extensions list and add:

    "oderwat.indent-rainbow"

    What you did above was to add the unique identifier of an extension of the indent-rainbow. This will let Codespaces know that this extension should be pre-installed upon startup.

To find the unique identifier of an extension:

💡 Learn more here, https://docs.github.com/codespaces/customizing-your-codespace/personalizing-github-codespaces-for-your-account

2. Update to smooth scroll to a section

In your site header you have links to each section below. Click one of these links and watch it scroll the page to that section. Not really a scroll, right?

Let's make this a better user experience by slowing that down so the user has a sense of what is happening, and where they are navigating to on the page.

  1. Open /src/BlazorApp/wwwroot/css/app.css, which is the stylesheet for your portfolio application. We need to add a style for html. If you look, you'll see right now html and body styles are being set together, so let's add the following css snippet to set the scrolling for the html element:

    html {
      scroll-behavior: smooth;
    }

Your site should already be running in your Codespaces, and the change will reload onto the page automatically. Click a link in the top header to see the smooth scroll in action.

3. Animate desk photo

Animations are a way you can easily add some motion to elements on your page to increase user interactivity and highlight items you want to make sure they notice. Let's animate the desk photo in the portfolio section.

  1. Open your site's stylesheet, /src/BlazorApp/wwwroot/css/app.css within your Codespaces. Add the animation sequence by adding a @keyframes definition to slide in from the left:

    @keyframes slideInLeft {
      0% {
        transform: translateX(-100%);
      }
      100% {
        transform: translateX(0);
      }
    }
  2. Now that we have defined our slideInLeft animation sequence we can tell our desk photo to animate itself with that sequence. Open /src/BlazorApp/Components/Portfolio.razor and locate the img tag. You will see it utilizes inline CSS to set it's styling. Within it's style definition add the following:

    animation: 1s ease-out 0s 1 slideInLeft;

    Your image tag should look something like:

    <img src="@(hero.Src)" style="height: 90%; width: 100%; object-fit: cover; animation: 1s ease-out 0s 1 slideInLeft;" alt="@(hero.Alt)" />

Your site should already be running in your Codespaces, and the change will reload onto the page automatically. Scroll up and down the page and watch your desk photo slide onto the page.

🤩 Bonus: Animate scroll down arrow

4. Add a new section

We started you off with a few basic sections for your portfolio site, but you have creative freedom to make it your own and add new sections relevant to what you want on your site.

For an example, let's add an education section to your portfolio site.

  1. Create a new component for the section within the Components folder. Add a new file called Education.razor.

  2. In Education.razor add the component function, export and information you'd like to include:

    <section class="light" id="portfolio">
        <h2>Education</h2>
    </section>
  3. In Index.razor add the Education component where you would like it to render within the page by inserting:

    <Education />

In your Codespaces, your portfolio application should be running and will reload your site with the changes.


📚 Resources

Codespaces Browser App

If you are using Edge or Chrome you will see an option to install the Codespaces app when you launch your Codespaces. The Codespaces app lets you launch your Codespaces within the app so you can work outside of the browser. Look for the app icon and install pop-up to try it out.

Codespaces browser app

🔎 Found an issue or have an idea for improvement?

Help us make this template repository better by letting us know and opening an issue!.

More Repositories

1

GitHubGraduation-2022

Join the GitHub Graduation Yearbook and "walk the stage" on June 11.
1,446
star
2

GitHubGraduation-2021

Join the GitHub Graduation Yearbook and "walk the stage" on June 5.
JavaScript
1,375
star
3

classroom

GitHub Classroom automates repository creation and access control, making it easy for teachers to distribute starter code and collect assignments on GitHub.
Ruby
1,339
star
4

graduation

$ git remote <graduation> yearbook
JavaScript
747
star
5

codespaces-project-template-js

Codespaces template for creating and deploying your own React portfolio
JavaScript
603
star
6

primer-explore-github

406
star
7

teachers_pet

Command line tool to help teachers use GitHub in their classrooms
Ruby
187
star
8

teachers

Join the discussion in the GitHub Education Community:
182
star
9

codespaces-project-template-py

Codespaces template for building a Python project
HTML
157
star
10

launchpad-profile-readme

128
star
11

classroom-assistant

Clone student repositories in bulk
JavaScript
116
star
12

Octernships

GitHub Octernships program connects students with industry partners in paid professional experiences and mentorship on open source and software development projects.
115
star
13

memebot_discord

Launch your very own Discord bot to welcome your users and share a meme.
Dockerfile
114
star
14

github-starter-course

93
star
15

github-university-2020

86
star
16

Student-Developer-Pack-Current-Partners-FAQ

This repo gives you an overview of the Student Developer Pack, the current partners in the pack and answers to frequently asked questions about the pack.
84
star
17

codespaces-teaching-template-py

Codespaces template for teaching Python
Jupyter Notebook
83
star
18

autograding

GitHub Education Auto-grading and Feedback for GitHub Classroom
TypeScript
59
star
19

autograding-example-python

GitHub Classroom autograding example repo with Python and Pytest
Python
45
star
20

PR-TalentLandMX

Participa para ganar swag especial dentro de Talend Land 2023
42
star
21

PR-Pao-de-Queijo-Request

HTML
41
star
22

codespaces-teaching-js-template

Codespaces template for teaching JavaScript
JavaScript
38
star
23

guide

GitHub guide for teachers
Ruby
34
star
24

autograding-example-java

GitHub Classroom autograding example repo with Java, Gradle, and JUnit
Java
26
star
25

PR-Patches-Campus-Party

PR-Patches-Campus-Party
HTML
24
star
26

Classroom-Report-2020

Design, analysis, findings and raw data from the 2020 GitHub Education Classroom Report
20
star
27

Classroom-Report-2018

Design, analysis, findings and raw data from the 2018 GitHub Education Classroom Report
20
star
28

primer-copilot

17
star
29

hackconviii

The conference for hacker community leaders: https://hackcon.mlh.io/. Here you can find everything related to the GitHub Scavenger Hunt.
16
star
30

codespaces-teaching-template-dotnet

Codespaces template for teaching .NET
HTML
14
star
31

Series-Intro-to-GitHub-Flow

12
star
32

autograding-example-c

GitHub Classroom autograding example repo with C and bash tests
Shell
12
star
33

autograding-example-cpp

GitHub Classroom autograding example repo with C++ and Catch.
C++
12
star
34

autograding-grading-reporter

Renders Autograding output and syncs results to classroom
JavaScript
11
star
35

autograding-example-node

GitHub Classroom autograding example repo with Node and Jest.
JavaScript
10
star
36

Classroom-Report-2019

Design, analysis, findings and raw data from the 2019 GitHub Education Classroom Report
10
star
37

Global-Campus-Experiences

This is a guide to Global Campus Experiences and how learners can approach incorporating them into your learning journey.
7
star
38

edu-resource-guide

Resources for GitHub and GitHub Education products and services.
5
star
39

autograding-command-grader

JavaScript
3
star
40

autograding-io-grader

JavaScript
2
star
41

example-classroom-template

Ruby
1
star