amirSite
Amir Hossein Khademi 2023-07-24 16:28:09 +03:30
commit b55bfd26b8
146 changed files with 4082 additions and 0 deletions

63
.gitattributes vendored 100644
View File

@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

363
.gitignore vendored 100644
View File

@ -0,0 +1,363 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd

11
.vscode/launch.json vendored 100644
View File

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch and Debug Standalone Blazor WebAssembly App",
"type": "blazorwasm",
"request": "launch",
"cwd": "${workspaceFolder}/Resume.Blazor"
}
]
}

3
.vscode/settings.json vendored 100644
View File

@ -0,0 +1,3 @@
{
"dotnet.defaultSolution": "Resume.sln"
}

41
.vscode/tasks.json vendored 100644
View File

@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Resume.Blazor/Resume.Blazor.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Resume.Blazor/Resume.Blazor.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Resume.Blazor/Resume.Blazor.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,41 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch and Debug Standalone Blazor WebAssembly App",
"type": "blazorwasm",
"request": "launch",
"cwd": "${workspaceFolder}",
"url": "http://localhost:40927"
},
{
"name": "Watch",
"type": "coreclr",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "dotnet",
"args": [
"watch",
"--project",
".",
"--verbose" // Let's us confirm browser connects with hot reload capabilities
],
"preLaunchTask": "build" // Ensure we don't watch an unbuilt site
},
{
"name": "Attach",
"type": "blazorwasm",
"request": "attach",
"cwd": "${workspaceFolder}",
"url": "https://localhost:40927", // Tell launch where to find site
"timeout": 120000 // Allows time for the site to launch
}
],
"compounds": [
{
"name": "Debug with Hot Reload",
"configurations": ["Watch", "Attach"]
}
]
}

View File

@ -0,0 +1,3 @@
{
"dotnet.defaultSolution": "Resume.Blazor.sln"
}

View File

@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Resume.Blazor.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Resume.Blazor.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Resume.Blazor.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,12 @@
<Router AppAssembly="@typeof(App).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>

View File

@ -0,0 +1,24 @@
<div class="flex flex-row my-5">
<div class="bg-[#2E2E48] py-2 px-2.5 rounded-full">
<svg width="25" height="25" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="@SvgPath" fill="#E2E6EE" />
</svg>
</div>
<div class="mx-4">
<p class="text-gray-400">@Title</p>
<p class="text-white -mt-1">@Detail</p>
</div>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public string Detail { get; set; }
[Parameter]
public string SvgPath { get; set; }
}

View File

@ -0,0 +1,20 @@
<div class="my-8 mx-1">
<div
class="w-[19rem] bg-[url('https://rwrg.razi.ac.ir/documents/2384744/2384950/razi+1.png.jpg/ebadeea5-6be3-d2b5-31ee-070d1f5504b3?t=1652690416693')] rounded-md"
>
<div class="bg-black/60 backdrop-blur-sm rounded-md p-5 text-white">
<div>
<div class="justify-items-end w-full">
<img
src="https://isic.ir/wp-content/uploads/2019/08/dow12nload.jpg"
class="w-20 h-20 rounded-md"
/>
</div>
<p>iGarson</p>
<p class="text-gray-400">2018 - 2022</p>
</div>
</div>
</div>
</div>
@code { }

View File

@ -0,0 +1,32 @@
<div class="mt-2">
<MudStack>
<div class="text-gray-400">
<p>@Period</p>
<div class="flex flex-row">
<img src="@ImageSrc" class="w-[3.5rem] my-2 h-[3.5rem] rounded-md" />
<div class="mx-3 my-auto">
<p class="text-white">@CompanyName</p>
<div class="flex flex-wrap my-2 -mx-1">
@foreach (var feild in Feilds)
{
<div class="bg-[#2E2E48] mx-1 px-3 py-1 rounded-md text-[0.7rem]">
<p>@feild</p>
</div>
}
</div>
</div>
</div>
</div>
<p class="text-justify -mt-2">@Detail</p>
</MudStack>
</div>
@code {
[Parameter] public string CompanyName { get; set; }
[Parameter] public string Detail { get; set; }
[Parameter] public string CompanyImage { get; set; }
[Parameter] public bool HasLeftBorder { get; set; }
[Parameter] public string Period { get; set; }
[Parameter] public string ImageSrc { get; set; }
[Parameter] public string[] Feilds { get; set; }
}

View File

@ -0,0 +1,39 @@
<MudCard Elevation="27" class="f-full m-1 bg-[#2E2E48] rounded-lg">
<MudCardContent>
<MudStack Justify="Justify.SpaceBetween">
<MudImage Src="@ImageSrc" ObjectFit="ObjectFit.Cover" Class="rounded-lg" />
<MudText Typo="Typo.h6" class=" font-outfit mt-1">@Name</MudText>
<p class="text-gray-400">
@Detail
</p>
<div class="flex space-x-1 mt-3">
@foreach (var feild in Feilds)
{
<div class="bg-[#232339] px-3 py-1 rounded-md text-[0.7rem]">
<p>@feild</p>
</div>
}
</div>
@if (ShowButton)
{
<MudButton StartIcon="@Icons.Material.Filled.InsertLink" Variant="Variant.Outlined" Color="Color.Primary"
FullWidth="true">@ButtonText</MudButton>
}
</MudStack>
</MudCardContent>
</MudCard>
@code {
[Parameter] public string Name { get; set; }
[Parameter] public string Detail { get; set; }
[Parameter] public string Link { get; set; }
[Parameter] public string[] Feilds { get; set; }
[Parameter] public string ImageSrc { get; set; }
[Parameter] public bool ShowButton { get; set; } = true;
[Parameter] public string ButtonText { get; set; }
}

View File

@ -0,0 +1,27 @@
<MudCard Elevation="27" class="bg-[#2E2E48] rounded-lg">
<MudCardContent>
<MudHidden Breakpoint="Breakpoint.SmAndDown" Invert="true">
<MudStack AlignItems="AlignItems.Center">
<img src="@ImageSrc" class="w-16 h-16 rounded-md" />
<MudText Typo="Typo.subtitle2" Align="Align.Center" class="text-white">
<p>@Name</p>
</MudText>
<p class="text-gray-400 text-[0.8rem]">@ExperiencePeriod Years Experience</p>
</MudStack>
</MudHidden>
<MudHidden Breakpoint="Breakpoint.MdAndUp" Invert="true">
<MudStack Row="true">
<img src="@ImageSrc" class="w-12 h-12 rounded-md" />
<div class="my-auto ml-2">
<p class="text-white">@Name</p>
<p class="text-gray-400 text-[0.8rem]">@ExperiencePeriod Years Experience</p>
</div>
</MudStack>
</MudHidden>
</MudCardContent>
</MudCard>
@code {
[Parameter] public string Name { get; set; }
[Parameter] public int ExperiencePeriod { get; set; }
[Parameter] public string ImageSrc { get; set; }
}

View File

@ -0,0 +1,14 @@
<div class="bg-[#2E2E48] justify-center py-7 px-5 rounded-md">
<img src="@ImageSrc" class="mb-4 mx-auto w-16 h-16 rounded-md" />
<div class="my-auto ml-2">
<p class="text-center text-white">@Name</p>
<p class="text-center text-gray-400 text-[0.8rem]">@ExperiencePeriod Years Experience</p>
</div>
</div>
@code
{
[Parameter] public string Name { get; set; }
[Parameter] public int ExperiencePeriod { get; set; }
[Parameter] public string ImageSrc { get; set; }
}

View File

@ -0,0 +1,156 @@
using Resume.Blazor.Models.ItemModels;
namespace Resume.Blazor;
public static class ExperienceHelper
{
public static List<ProjectItemModel> ProjectItemModels = new List<ProjectItemModel>
{
new ProjectItemModel{
Name="iGarson" ,
Feilds= new string[] {"Scrum Master" , "Senior .Net Developer"},
ButtonText ="WebSite" ,
Link="igarson.app",
ImageSrc="../assets/images/igarsonCover.jpg",
Detail="iGarson ( Your Majesty ) lunched for the comprehensive management of restaurants, it has a separate application for customers, management and waiters of restaurants, which provides very attractive features to restaurants and their customers."},
new ProjectItemModel{
Name="MuCut" ,
Feilds= new string[] {"Scrum Master" , "Senior .Net Developer"},
ButtonText ="WebSite" ,
Link="mucut.ir",
ImageSrc="../assets/images/mucutCover.jpg",
Detail="MuCut is a comprehensive platform for taking appointments from men's and women's barbershops, which makes the appointment process easier for customers and managers of barbershops."},
new ProjectItemModel{
Name="iMed" ,
Feilds= new string[] {"Project Manager" , "Senior .Net Developer"},
ButtonText ="WebSite" ,
Link="imedapp.ir",
ImageSrc="../assets/images/imedCover.jpg",
Detail="iMed has provided an online learning system with flash cards and attractive videos for medical students, which is used by more than 10,000 medical students."},
new ProjectItemModel{
Name="Visa Bartar" ,
Feilds= new string[] {"Senior .Net Developer"},
ButtonText ="WebSite" ,
Link="visabarta.com",
ImageSrc="../assets/images/visabartarCover.jpg",
Detail="VisaBartar is the website of VisaBartar Immigration and Tourist Company, which provides users with blogs and services information, measuring the probability of immigration acceptance."},
new ProjectItemModel{
Name="Siban" ,
Feilds= new string[] {"Senior .Net Developer"},
ButtonText ="WebSite" ,
ShowButton=false,
Link="igarson.app",
ImageSrc="../assets/images/sibanCover.jpg",
Detail="Siban is an application for communication between university students and academic associations, which includes features such as scientific association announcements, promotional banners of academic associations, and their elections."},
new ProjectItemModel{
Name="RaziApp" ,
ShowButton=false,
Feilds= new string[] {"Senior CrossPlatform Developer"},
ButtonText ="WebSite" ,
Link="igarson.app",
ImageSrc="../assets/images/raziappCover.jpg",
Detail="RaziApp is a system for introducing professors and various departments of Razi University, which provides various communication channels for students and different departments of the university, such as the reservation section for sports facilities, and more."},
new ProjectItemModel{
Name="Netina Stomp .Net Package" ,
Feilds= new string[] {"Senior CrossPlatform Developer"},
ButtonText ="GitHub" ,
Link="https://github.com/Netina/Netina.Stomp.Client",
ImageSrc="../assets/images/netinaCover.jpg",
Detail="Netina Stomp .Net Package is a package for .NET applications that allows them to connect to STOMP servers. This package has been downloaded and used more than 5,000 times."},
new ProjectItemModel{
Name="Plix" ,
Feilds= new string[] {"Senior .Net Developer"},
ButtonText ="GitHub" ,
Link="https://github.com/mrmohande3/Plix",
ImageSrc="../assets/images/plixCover.jpg",
Detail="Plix is a Windows application implemented with the latest .NET frameworks that helps you manage and categorize the movies available on your personal system. Additionally, based on your personal preferences, it offers attractive recommendations "},
new ProjectItemModel{
Name="Vishka90" ,
Feilds= new string[] {"Senior CrossPlatform Developer"},
ButtonText ="WebSite" ,
ShowButton = false,
Link="igarson.app",
ImageSrc="../assets/images/netinaCover.jpg",
Detail="Vishka90 is an application for football lovers who participate in football prediction competitions that are legally implemented in Iran and earn prizes by winning."},
new ProjectItemModel{
Name="Terrace Management" ,
ShowButton=false,
Feilds= new string[] {"Senior CrossPlatform Developer"},
ButtonText ="WebSite" ,
Link="igarson.app",
ImageSrc="../assets/images/terraceCover.jpg",
Detail="The Terrace Management software is a personal software for managing the Terrace cafe and restaurant located in the city of Kermanshah, which provides accounting, menu management, and customer management sections for this establishment."},
};
public static List<SkillItemModel> ToolsItemModels = new List<SkillItemModel>
{
new SkillItemModel{ExperiencePeriod = 7 , Name = "Visual Studio" , ImageSrc = "../assets/images/vsLogo.png"},
new SkillItemModel{ExperiencePeriod = 7 , Name = "Nuget" , ImageSrc = "../assets/images/nugetLogo.png"},
new SkillItemModel{ExperiencePeriod = 7 , Name = "GitHub" , ImageSrc = "../assets/images/githubLogo.png"},
new SkillItemModel{ExperiencePeriod = 7 , Name = "Microsoft Office" , ImageSrc = "../assets/images/officeLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Photoshop" , ImageSrc = "../assets/images/photoshopLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "VSCode" , ImageSrc = "../assets/images/vscodeLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Postman" , ImageSrc = "../assets/images/postmanLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "SQLServer Management" , ImageSrc = "../assets/images/sqlmLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "ReSharper" , ImageSrc = "../assets/images/resharperLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Jira" , ImageSrc = "https://logowik.com/content/uploads/images/jira3124.jpg"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "BitBucket" , ImageSrc = "../assets/images/bitbucketLogo.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "WordPress" , ImageSrc = "../assets/images/wordpressLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "Adobe Xd" , ImageSrc = "../assets/images/xdLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "SonarQube" , ImageSrc = "../assets/images/sonarLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "Figma" , ImageSrc = "../assets/images/figmaLogo.png"},
new SkillItemModel{ExperiencePeriod = 1 , Name = "Rider" , ImageSrc = "../assets/images/riderLogo.png"},
new SkillItemModel{ExperiencePeriod = 1 , Name = "NDepend" , ImageSrc = "../assets/images/ndependLogo.png"},
new SkillItemModel{ExperiencePeriod = 1 , Name = "Studio 3T" , ImageSrc = "../assets/images/studio3tLogo.png"},
};
public static List<SkillItemModel> SkillItemModels = new List<SkillItemModel>
{
new SkillItemModel{ExperiencePeriod = 7 , Name = "C# Programming" , ImageSrc = "https://static.javatpoint.com/csharp/images/c-sharp.png"},
new SkillItemModel{ExperiencePeriod = 7 , Name = "C++ Programming" , ImageSrc = "../assets/images/cppLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "Asp .Net Core" , ImageSrc = "../assets/images/netcorLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "Xamarin" , ImageSrc = "../assets/images/xamarinLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "Xamarin Forms" , ImageSrc = "../assets/images/xamarinLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = ".NET MAUI" , ImageSrc = "../assets/images/mauiLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Prism" , ImageSrc = "../assets/images/prismLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "iOS Application" , ImageSrc = "../assets/images/iosLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "Android Application" , ImageSrc = "../assets/images/androidLogo.png"},
new SkillItemModel{ExperiencePeriod = 6 , Name = "Git" , ImageSrc = "https://git-scm.com/images/logos/downloads/Git-Icon-1788C.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Microsoft SQL Server" , ImageSrc = "https://logowik.com/content/uploads/images/microsoft-sql-server4529.jpg"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Windows Application" , ImageSrc = "https://www.sketchappsources.com/resources/source-image/windows-logo-alesiamjau.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Wpf" , ImageSrc = "../assets/images/netcorLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "SOLID" , ImageSrc = "../assets/images/solidLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "DDD" , ImageSrc = "../assets/images/dddLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "XAML" , ImageSrc = "../assets/images/xamlLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "MVVM Design Pattern" , ImageSrc = "../assets/images/mvvmLogo.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Entity Framework Core" , ImageSrc = "https://codeopinion.com/wp-content/uploads/2017/10/Bitmap-MEDIUM_Entity-Framework-Core-Logo_2colors_Square_Boxed_RGB.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "RESTful Api" , ImageSrc = "https://lh3.googleusercontent.com/-XvJzhz3pfH0/XjYG_xWkESI/AAAAAAAAJ9c/AYlgAtRknEU2W5fMcFhQoL6rmO8EBtIDQCK8BGAsYHg/s0/2020-02-01.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Web API" , ImageSrc = "https://static.javatpoint.com/tutorial/webapi/images/web-api-tutorial.png"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Postgress SQL" , ImageSrc = "https://www.influxdata.com/wp-content/uploads/PostgreSQL-logo.jpg"},
new SkillItemModel{ExperiencePeriod = 5 , Name = "Scrum" , ImageSrc = "https://images.credly.com/images/db768524-81d9-435e-96fc-33b517e15616/blob.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "SignalR" , ImageSrc = "https://img.stackshare.io/service/4013/SignalR-logo.png"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "Docker" , ImageSrc = "../assets/images/dockerLogo.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "UI-UX" , ImageSrc = "https://artographic.ir/file/attach/202102/1330.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "Clean Architecture" , ImageSrc = "../assets/images/carchLogo.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "MicroServices" , ImageSrc = "../assets/images/microserviceLogo.png"},
new SkillItemModel{ExperiencePeriod = 4 , Name = "Redis" , ImageSrc = "../assets/images/redisLogo.png"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "STOMP" , ImageSrc = "https://seeklogo.com/images/S/STOMP-logo-9B23B79AF7-seeklogo.com.gif"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "RabbitMQ" , ImageSrc = "../assets/images/rabbitLogo.png"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "DevOps" , ImageSrc = "https://cdn.dribbble.com/users/13574/screenshots/9711275/logo-devops.png"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "MongoDB" , ImageSrc = "https://res.cloudinary.com/hevo/image/upload/f_auto,q_auto/v1626694700/hevo-blog/MongoDB-sm-logo-500x400-1-1.gif"},
new SkillItemModel{ExperiencePeriod = 3 , Name = "gRPC" , ImageSrc = "https://avatars.githubusercontent.com/u/7802525?s=280&v=4"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "CICD" , ImageSrc = "../assets/images/cicdLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "ML.Net" , ImageSrc = "../assets/images/mlLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "QraphQL" , ImageSrc = "../assets/images/graphLogo.png"},
new SkillItemModel{ExperiencePeriod = 2 , Name = "Unity" , ImageSrc = "../assets/images/unityLogo.png"},
new SkillItemModel{ExperiencePeriod = 10 , Name = "Googling" , ImageSrc = "../assets/images/googleLogo.png"},
};
}

View File

@ -0,0 +1,11 @@
namespace Resume.Blazor.Models.ItemModels;
public class ProjectItemModel
{
public bool ShowButton { get; set; } = true;
public string Name { get; set; }
public string ImageSrc { get; set; }
public string Link { get; set; }
public string ButtonText { get; set; }
public string Detail { get; set; }
public string[] Feilds { get; set; }
}

View File

@ -0,0 +1,7 @@
namespace Resume.Blazor.Models.ItemModels;
public class SkillItemModel
{
public string Name { get; set; }
public int ExperiencePeriod { get; set; }
public string ImageSrc { get; set; }
}

View File

@ -0,0 +1,237 @@
@page "/"
@using Resume.Blazor.Components.ItemTemplate
<MudContainer MaxWidth="MaxWidth.ExtraExtraLarge">
<MudGrid>
<MudItem xs="0" md="3" class="bg-transparent">
<div class="m-8">
<img src="https://s3.ir-thr-at1.arvanstorage.ir/igarson/Images/utils/photo_2023-06-18_11-20-13.jpg"
class="rounded-md" />
@* <mud class="text-white font-extrabold font-outfit-black text-4xl mt-8"> Amir Hossein Khademi </p> *@
<MudText class="text-white font-extrabold font-outfit-black text-4xl mt-8" Typo="Typo.h1"> Amir Hossein Khademi
</MudText>
<MudText Typo="Typo.h2" class="bg-clip-text font-extrabold font-outfit-black text-3xl text-transparent bg-gradient-to-r mb-8 from-pink-500
to-violet-500">
Software Engineer
</MudText>
<div class="h-[0.1rem] bg-white opacity-10"></div>
<p class="my-5 text-gray-400">Contact Info</p>
<ContactInfoItemTemplate Title="Email" Detail="avvampier@gmail.com" SvgPath="M8.33325 8.33329H1.66659C1.20635 8.33329 0.833252 7.9602 0.833252 7.49996V2.46371C0.852672 2.01769 1.22014
1.6662 1.66659 1.66663H8.33325C8.79349 1.66663 9.16659 2.03972 9.16659 2.49996V7.49996C9.16659 7.9602 8.79349 8.33329
8.33325 8.33329ZM1.66659 3.27829V7.49996H8.33325V3.27829L4.99992 5.49996L1.66659 3.27829ZM1.99992 2.49996L4.99992
4.49996L7.99992 2.49996H1.99992Z" />
<ContactInfoItemTemplate Title="Phone" Detail="(+98) 921 480 2813" SvgPath="M7.9157 8.33329C4.36086 8.33833 1.66295 5.60808 1.66675 2.08434C1.66675 1.85422 1.8533 1.66663 2.08342
1.66663H3.18315C3.38964 1.66663 3.56505 1.81835 3.59537 2.0226C3.66804 2.51212 3.81057 2.9887 4.01862 3.43775L4.06143
3.53017C4.12097 3.65867 4.08061 3.81135 3.96536 3.89366C3.62479 4.13687 3.49463 4.62644 3.75995 5.00844C4.09291 5.48781
4.5126 5.90742 4.99186 6.24022C5.37384 6.50546 5.86333 6.37532 6.10654 6.03481C6.1889 5.9195 6.34167 5.87913 6.47025
5.93869L6.56224 5.9813C7.01133 6.18933 7.48793 6.33187 7.97751 6.40452C8.18177 6.43484 8.33341 6.61024 8.33341
6.81674V7.91662C8.33341 8.14674 8.14641 8.33328 7.91629 8.33328L7.9157 8.33329Z" />
<ContactInfoItemTemplate Title="Address" Detail="Tehran" SvgPath="M4.99992 8.74996C4.47364 8.30106 3.98583 7.80893 3.54159 7.27871C2.87492 6.48246 2.08325 5.29663 2.08325
4.16663C2.08266 2.98644 2.79336 1.92221 3.8837 1.47054C4.97404 1.01888 6.22911 1.26881 7.06325 2.10371C7.61178 2.6498
7.91905 3.39262 7.9166 4.16663C7.9166 5.29663 7.12492 6.48246 6.45825 7.27871C6.01401 7.80893 5.5262 8.30106 4.99992
8.74996ZM4.99992 2.91663C4.55334 2.91663 4.14068 3.15488 3.91739 3.54163C3.6941 3.92838 3.6941 4.40488 3.91739
4.79163C4.14068 5.17838 4.55334 5.41663 4.99992 5.41663C5.69028 5.41663 6.24992 4.85698 6.24992 4.16663C6.24992 3.47627
5.69028 2.91663 4.99992 2.91663Z" />
<div class="h-[0.1rem] bg-white opacity-10"></div>
<p class="my-5 text-gray-400">Socials</p>
<a href="instagram.com/mr.mohande3">
<div class="flex flex-row my-5">
<div>
<svg width="40" height="40" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect y="0.5" width="16" height="16" rx="8" fill="url(#paint0_radial_357_1266)" />
<rect y="0.5" width="16" height="16" rx="8" fill="url(#paint1_radial_357_1266)" fill-opacity="0.2" />
<path d="M6.33373 8.5002C6.33373 7.57972 7.07972 6.83333 8.0002 6.83333C8.92068 6.83333 9.66707 7.57972 9.66707 8.5002C9.66707
9.42068 8.92068 10.1671 8.0002 10.1671C7.07972 10.1671 6.33373 9.42068 6.33373 8.5002ZM5.43266 8.5002C5.43266 9.91826
6.58214 11.0677 8.0002 11.0677C9.41826 11.0677 10.5677 9.91826 10.5677 8.5002C10.5677 7.08214 9.41826 5.93266 8.0002
5.93266C6.58214 5.93266 5.4327 7.08206 5.4327 8.5002H5.43266ZM10.0694 5.83085C10.0694 5.94953 10.1045 6.06555 10.1704
6.16425C10.2363 6.26295 10.33 6.33989 10.4396 6.38535C10.5492 6.43081 10.6698 6.44274 10.7863 6.41964C10.9027 6.39653
11.0096 6.33943 11.0935 6.25554C11.1775 6.17166 11.2347 6.06477 11.2579 5.94839C11.2811 5.832 11.2692 5.71135 11.2239
5.6017C11.1785 5.49204 11.1016 5.3983 11.003 5.33233C10.9043 5.26635 10.7883 5.23112 10.6697 5.23107H10.6694C10.5104
5.23114 10.3578 5.29435 10.2453 5.40681C10.1328 5.51927 10.0695 5.67178 10.0694 5.83085ZM5.98012 12.5703C5.49262 12.5481
5.22765 12.4669 5.05156 12.3983C4.81811 12.3074 4.65155 12.1992 4.47642 12.0243C4.30129 11.8494 4.19289 11.683 4.1024
11.4495C4.03376 11.2735 3.95256 11.0085 3.9304 10.521C3.90616 9.9939 3.90132 9.83557 3.90132 8.50028C3.90132 7.16499
3.90656 7.0071 3.9304 6.4796C3.9526 5.9921 4.0344 5.72757 4.1024 5.55104C4.19329 5.31759 4.30153 5.15103 4.47642
4.9759C4.65131 4.80077 4.81771 4.69237 5.05156 4.60188C5.22757 4.53324 5.49262 4.45204 5.98012 4.42988C6.50718 4.40564
6.66551 4.4008 8.0002 4.4008C9.33489 4.4008 9.49338 4.40596 10.0209 4.42996C10.5084 4.45216 10.7729 4.53396 10.9494
4.60196C11.1829 4.69245 11.3495 4.80109 11.5246 4.97598C11.6997 5.15087 11.8077 5.31767 11.8986 5.55112C11.9672 5.72713
12.0484 5.99218 12.0706 6.47968C12.0948 7.00718 12.0997 7.16507 12.0997 8.50036C12.0997 9.83565 12.0948 9.99354 12.0706
10.521C12.0484 11.0085 11.9668 11.2735 11.8986 11.4496C11.8077 11.683 11.6995 11.8496 11.5246 12.0243C11.3497 12.1991
11.1829 12.3075 10.9494 12.3984C10.7734 12.467 10.5084 12.5482 10.0209 12.5704C9.49382 12.5946 9.33549 12.5994 8.0002
12.5994C6.66491 12.5994 6.50702 12.5946 5.98012 12.5704V12.5703ZM5.93872 3.53028C5.40642 3.55452 5.04268 3.63893 4.72503
3.76253C4.39626 3.89018 4.11756 4.06142 3.83927 4.33927C3.56098 4.61713 3.39018 4.89586 3.26253 5.22503C3.13893 5.54288
3.05452 5.90642 3.03028 6.43872C3.00564 6.97186 3 7.14231 3 8.5002C3 9.8581 3.00564 10.0285 3.03028 10.5617C3.05452
11.094 3.13893 11.4575 3.26253 11.7754C3.39018 12.1041 3.56102 12.3834 3.83927 12.6611C4.11752 12.9389 4.39586 13.1099
4.72503 13.2379C5.04328 13.3615 5.40642 13.4459 5.93872 13.4701C6.47214 13.4944 6.64231 13.5004 8.0002 13.5004C9.35809
13.5004 9.52854 13.4948 10.0617 13.4701C10.594 13.4459 10.9575 13.3615 11.2754 13.2379C11.6041 13.1099 11.8828 12.939
12.1611 12.6611C12.4394 12.3833 12.6099 12.1041 12.7379 11.7754C12.8615 11.4575 12.9463 11.094 12.9701 10.5617C12.9944
10.0281 13 9.8581 13 8.5002C13 7.14231 12.9944 6.97186 12.9701 6.43872C12.9459 5.90638 12.8615 5.54268 12.7379
5.22503C12.6099 4.89626 12.439 4.61757 12.1611 4.33927C11.8833 4.06098 11.6041 3.89018 11.2758 3.76253C10.9575 3.63893
10.594 3.55412 10.0621 3.53028C9.52886 3.50592 9.3585 3.5 8.0008 3.5C6.64311 3.5 6.47234 3.50564 5.93892 3.53028"
fill="white" />
<defs>
<radialGradient id="paint0_radial_357_1266" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.0355 16.1495) scale(20.3141)">
<stop offset="0.09" stop-color="#FA8F21" />
<stop offset="0.78" stop-color="#D82D7E" />
</radialGradient>
<radialGradient id="paint1_radial_357_1266" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="translate(8 16) scale(12.5)">
<stop offset="0.713542" stop-color="#8C3AAA" stop-opacity="0" />
<stop offset="1" stop-color="#8C3AAA" />
</radialGradient>
</defs>
</svg>
</div>
<div class="mx-4">
<p class="text-gray-400 text-sm -mb-1">Instagram</p>
<a class="text-white -mt-1" href="instagram.com/mr.mohande3">mr.mohande3</a>
</div>
</div>
</a>
<a href="instagram.com/mr.mohande3">
<div class="flex flex-row my-5">
<div class="p-1 bg-[#00ACEE] my-auto rounded-full">
<img class="w-7 h-7"
src="https://png.pngtree.com/png-vector/20221018/ourmid/pngtree-twitter-social-media-round-icon-png-image_6315985.png" />
</div>
<div class="mx-4">
<p class="text-gray-400 text-sm -mb-1">Twitter</p>
<a class="text-white">Amir Hossein Khademi</a>
</div>
</div>
</a>
<a target="_blank" href="https://instagram.com/mr.mohande3">
<div class="flex flex-row my-5">
<div class="p-1 bg-[#0077B5] my-auto rounded-full">
<img class="w-7 h-7 rounded-full"
src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LinkedIn_logo_initials.png/800px-LinkedIn_logo_initials.png" />
</div>
<div class="mx-4">
<p class="text-gray-400 text-sm -mb-1">Linkdin</p>
<a class="text-white -mt-1">mrmohande3</a>
</div>
</div>
</a>
</div>
</MudItem>
<MudItem xs="12" md="9" class="bg-transparent">
<MudStack Row="true" AlignItems="AlignItems.Center">
<div class="bg-[#2E2E48] w-10 h-10 rounded-full">
<div class="bg-[#C696FC] w-3 h-3 rounded-full m-3.5"></div>
</div>
<p class="text-white text-2xl font-bold">Experience</p>
</MudStack>
<div class="flex ml-5 flex-row">
<div class="w-0.5 bg-[#2E2E48] h-auto collapse md:visible"></div>
<MudGrid class="md:ml-5 my-5">
<MudItem sm="6">
<ExperienceItemTemplate Period="April 2018 - Now"
Feilds="@(new string[] {"Co-Founder" , "Senior .Net Developer"})" HasLeftBorder="true"
ImageSrc="../assets/images/vnfLogo.png" CompanyName="Vira Nasir Fanafar"
Detail="Since 2018, with the start of startup activity , we introduce our brand , Vira Nasr Fanavar and I have been responsible as Co-Founder , senior .Net Developer of projects." />
</MudItem>
<MudItem sm="6">
<ExperienceItemTemplate Period="June 2019 - Now" Feilds="@(new string[] {"Scrum Master"})"
ImageSrc="../assets/images/mucutLogo.png" HasLeftBorder="false" CompanyName="Sahand Company"
Detail="Since 2020, I have been working as a Scrum Master in Sahand company, while also developing and implementing the idea of a startup called Mokat. I gained valuable experiences in development, implementation, and team building." />
</MudItem>
</MudGrid>
</div>
<MudStack Row="true" AlignItems="AlignItems.Center">
<div class="bg-[#2E2E48] w-10 h-10 rounded-full">
<div class="bg-[#C696FC] w-3 h-3 rounded-full m-3.5"></div>
</div>
<MudText class=" text-white text-2xl font-bold">
<p>Latest Projects</p>
</MudText>
</MudStack>
<MudStack Row="true" class="md:ml-5">
<div class="w-0.5 md:mr-10 bg-[#2E2E48] h-auto collapse md:visible"></div>
<MudGrid class="my-5" Spacing="1" Justify="Justify.Center">
@foreach (var item in ProjectItemModels)
{
<MudItem xs="12" sm="6" md="6" lg="6" xl="3">
<ProjectItemTemplate Name="@item.Name" Detail="@item.Detail" ImageSrc="@item.ImageSrc"
ShowButton="@item.ShowButton" Link="@item.Link" Feilds="@item.Feilds" ButtonText="@item.ButtonText" />
</MudItem>
}
</MudGrid>
</MudStack>
<MudStack Row="true" AlignItems="AlignItems.Center">
<div class="bg-[#2E2E48] w-10 h-10 rounded-full">
<div class="bg-[#C696FC] w-3 h-3 rounded-full m-3.5"></div>
</div>
<p class="my-auto mx-5 text-white text-2xl font-bold">Skills</p>
</MudStack>
<MudStack Row="true" class="md:ml-5">
<div class="w-0.5 collapse md:visible md:mr-10 bg-[#2E2E48] h-auto"></div>
<MudGrid class="my-5" Spacing="1">
@foreach (var item in SkillItemModels)
{
<MudItem xs="6" sm="4" md="4" lg="3">
<SkillItemTemplate Name="@item.Name" ExperiencePeriod="@item.ExperiencePeriod" ImageSrc="@item.ImageSrc" />
</MudItem>
}
</MudGrid>
</MudStack>
<MudStack Row="true" AlignItems="AlignItems.Center">
<div class="bg-[#2E2E48] w-10 h-10 rounded-full">
<div class="bg-[#C696FC] w-3 h-3 rounded-full m-3.5"></div>
</div>
<p class="my-auto mx-5 text-white text-2xl font-bold">Tools</p>
</MudStack>
<MudStack Row="true" class="md:ml-15">
<div class="w-0.5 collapse md:mr-10 bg-[#2E2E48] h-auto"></div>
<MudGrid class="my-5" Spacing="1" Justify="Justify.Center">
@foreach (var item in ToolsItemModels)
{
<MudItem xs="6" sm="4" md="4" lg="2">
<ToolsItemTemplate Name="@item.Name" ExperiencePeriod="@item.ExperiencePeriod" ImageSrc="@item.ImageSrc" />
</MudItem>
}
</MudGrid>
</MudStack>
</MudItem>
</MudGrid>
</MudContainer>
@code
{
[Parameter] public List<SkillItemModel> SkillItemModels { get; set; } = ExperienceHelper.SkillItemModels;
[Parameter] public List<SkillItemModel> ToolsItemModels { get; set; } = ExperienceHelper.ToolsItemModels;
[Parameter] public List<ProjectItemModel> ProjectItemModels { get; set; } = ExperienceHelper.ProjectItemModels;
}

View File

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Resume.Blazor;
using MudBlazor.Services;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");
builder.Services.AddMudServices();
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();

View File

@ -0,0 +1,38 @@
{
"profiles": {
"http": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:40927"
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
},
"WSL": {
"commandName": "WSL2",
"launchUrl": "http://localhost:40927",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "http://localhost:40927"
},
"distributionName": ""
}
},
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:40927",
"sslPort": 0
}
}
}

View File

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="npm run buildcss" />
</Target>
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.4" PrivateAssets="all" />
<PackageReference Include="MudBlazor" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.001.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Resume.Blazor", "Resume.Blazor.csproj", "{5AC06901-253D-454F-A66A-90687C07483D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5AC06901-253D-454F-A66A-90687C07483D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5AC06901-253D-454F-A66A-90687C07483D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5AC06901-253D-454F-A66A-90687C07483D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5AC06901-253D-454F-A66A-90687C07483D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7AC9C908-B3C9-44B8-B332-75F8067CAFA0}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,10 @@
@inherits LayoutComponentBase
<MudThemeProvider IsDarkMode="true" />
<MudDialogProvider />
<MudSnackbarProvider />
<MudLayout>
<MudMainContent class="bg-[#232339] pt-5">
@Body
</MudMainContent>
</MudLayout>

View File

@ -0,0 +1,81 @@
.page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row ::deep a, .top-row ::deep .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
text-decoration: underline;
}
.top-row ::deep a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row:not(.auth) {
display: none;
}
.top-row.auth {
justify-content: space-between;
}
.top-row ::deep a, .top-row ::deep .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth ::deep a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}

View File

@ -0,0 +1,40 @@
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">Resume.Blazor</a>
<button
title="Navigation menu"
class="navbar-toggler"
@onclick="ToggleNavMenu"
>
<span class="navbar-toggler-icon"></span>
</button>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="oi oi-plus" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
</NavLink>
</div>
</nav>
</div>
@code {
private bool collapseNavMenu = true; private string NavMenuCssClass =>
collapseNavMenu ? "collapse" : null; private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
}

View File

@ -0,0 +1,68 @@
.navbar-toggler {
background-color: rgba(255, 255, 255, 0.1);
}
.top-row {
height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand {
font-size: 1.1rem;
}
.oi {
width: 2rem;
font-size: 1.1rem;
vertical-align: text-top;
top: -2px;
}
.nav-item {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type {
padding-top: 1rem;
}
.nav-item:last-of-type {
padding-bottom: 1rem;
}
.nav-item ::deep a {
color: #d7d7d7;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
}
.nav-item ::deep a.active {
background-color: rgba(255,255,255,0.25);
color: white;
}
.nav-item ::deep a:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
@media (min-width: 641px) {
.navbar-toggler {
display: none;
}
.collapse {
/* Never collapse the sidebar for wide screens */
display: block;
}
.nav-scrollable {
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}

View File

@ -0,0 +1,20 @@
<div class="alert alert-secondary mt-4">
<span class="oi oi-pencil me-2" aria-hidden="true"></span>
<strong>@Title</strong>
<span class="text-nowrap">
Please take our
<a
target="_blank"
class="font-weight-bold link-dark"
href="https://go.microsoft.com/fwlink/?linkid=2186157"
>brief survey</a
>
</span>
and tell us what you think.
</div>
@code {
// Demonstrates how a parent component can supply parameters [Parameter]
public string Title { get; set; }
}

View File

@ -0,0 +1,12 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using Resume.Blazor
@using Resume.Blazor.Shared
@using MudBlazor
@using Resume.Blazor.Models.ItemModels

1377
Resume.Blazor/package-lock.json generated 100644

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
{
"name": "resume",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"buildcss": "postcss wwwroot/css/app.css -o wwwroot/css/app.min.css"
},
"author": "",
"license": "ISC",
"dependencies": {
"autoprefixer": "^10.4.14",
"postcss": "^8.4.23",
"postcss-cli": "^10.1.0",
"tailwindcss": "^3.3.2"
}
}

View File

@ -0,0 +1,23 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
purge: {
enabled: true,
content: [
'./**/*.html',
'./**/*.razor'
],
},
content: ["./src/**/*.{razor,html,cshtml}"],
theme: {
extend:
{
fontFamily: {
'outfit': ['Outfit', 'sans-serif'],
'outfit-black': ['Outfit-Black', 'sans-serif'],
'poppins': ['Poppins', 'sans-serif']
},
},
},
plugins: [],
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Some files were not shown because too many files have changed in this diff Show More