GithubHelp home page GithubHelp logo

suyxhs / personal-portfolio Goto Github PK

View Code? Open in Web Editor NEW

This project forked from msanvarov/personal-portfolio

0.0 0.0 0.0 66.58 MB

๐ŸŒ react next.js app for personal portfolio

Home Page: https://sal-anvarov.com

JavaScript 0.32% TypeScript 36.45% Dockerfile 0.44% SCSS 38.45% MDX 24.34%

personal-portfolio's Introduction

Sal's Personal Portfolio Website

portfolio website

A modern Next.js portfolio website built with ๐Ÿ’™ and โ˜• by Sal Anvarov. Deployed with HotJar, GTM, and Formspree tools for analytics and form tracking.

Deploy with Vercel

Remark: Deploying on Vercel will FAIL as Nx has the output directory as dist on builds by default. To fix this - navigate to the Build and Development Settings and change the Output Directory to dist/apps/personal-portfolio/.next. Documentation: https://vercel.com/docs/deployments/configure-a-build#build-and-development-settings

Table of Contents:

  1. Description
  2. Prerequisites
  3. Deployment
  4. Environment Configuration
  5. Repository Files and Folders
  6. Testing

๐Ÿ”Ž This repo was created with Nx.

๐Ÿ“š Description

Preview: https://www.sal-anvarov.com/

This portfolio website was built with ease of extensibility in mind. This app comes with MDX for case-studies and blog management and Bootstrap for styling. The app has redux state management via Redux Toolkit and React Hooks.

Remark: Given App Router is not fully stable, I opted to stay with Pages Router until further notice. The plan is to eventually migrate to App Router.


๐Ÿ› ๏ธ Prerequisites

Tracking Tools

Non Docker

  • Please make sure to have Node.js (16+) locally by downloading the Javascript runtime via brew, choco, or apt-get.

Docker ๐Ÿณ

  • Please make sure to have Docker Desktop operational to quickly compose the required dependencies. Then follow the docker procedure outlined below.

๐Ÿš€ Deployment

Manual Deployment without Docker

  • Clone the repo via git clone https://github.com/msanvarov/personal-portfolio.

  • Navigate to the root directory of repo via cd personal-portfolio.

  • Download dependencies via npm i or yarn.

  • Create a .env file via the cp apps/personal-portfolio/.env.example .env command and replace the example environment variables with valid ones.

  • Start the app in development mode via npm run start (the app will be exposed on http://localhost:4200; not to conflict with the default React, Angular, or Vue ports).

Remark: In the docker deployment, the UI is automatically started and served by the API.

Deploying with Docker ๐Ÿณ

Open in Docker Dev Environments Open in Docker Dev Environments

  • Execute the following command in-app directory:
# creates and loads the docker container in detached mode with the required configuration
$ docker-compose up -d
  • The following command will download dependencies and execute the web application on http://localhost:80 (deployed behind a Nginx reverse proxy).

๐Ÿ”’ Environment Configuration

By default, the application comes with a config module that can read in every environment variable from the .env file.

APP_ENV - the application environment to execute as, either in development or production. Determines the type of logging options to utilize. Options: development or production.

ENABLE_TRACKING - enables tracking tools. Options: true or false.

HOTJAR_WEBSITE_UID - hotjar website uid, requires a HotJar account (free)

HOTJAR_VERSION - hotjar version

GOOGLE_TAG_MANAGER_UID - google tag manager uid, requires google analytics to be onboarded.

MICROSOFT_CLARITY_UID - microsoft clarity uid, manages heatmaps and events. requires a Microsoft account (free)

Remark: DebugBear can be easy onboarded via Vercel

DEBUGBEAR_RUM_UID - debugbear real user monitoring (RUM) uid, requires DebugBear to be onboarded (free).


๐Ÿ“ Repository Files and Folders

.
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ apps
โ”‚   โ”œโ”€โ”€ personal-portfolio
โ”‚   โ”‚   โ”œโ”€โ”€ case-studies
โ”‚   โ”‚   โ”œโ”€โ”€ index.d.ts
โ”‚   โ”‚   โ”œโ”€โ”€ jest.config.ts
โ”‚   โ”‚   โ”œโ”€โ”€ next-env.d.ts
โ”‚   โ”‚   โ”œโ”€โ”€ next.config.js
โ”‚   โ”‚   โ”œโ”€โ”€ pages
โ”‚   โ”‚   โ”œโ”€โ”€ posts
โ”‚   โ”‚   โ”œโ”€โ”€ project.json
โ”‚   โ”‚   โ”œโ”€โ”€ public
โ”‚   โ”‚   โ”œโ”€โ”€ tests
โ”‚   โ”‚   โ”œโ”€โ”€ tsconfig.json
โ”‚   โ”‚   โ”œโ”€โ”€ tsconfig.spec.json
โ”‚   โ”‚   โ””โ”€โ”€ utils
โ”‚   โ””โ”€โ”€ personal-portfolio-e2e
โ”‚       โ”œโ”€โ”€ cypress.config.ts
โ”‚       โ”œโ”€โ”€ project.json
โ”‚       โ”œโ”€โ”€ src
โ”‚       โ””โ”€โ”€ tsconfig.json
โ”œโ”€โ”€ assets
โ”‚   โ””โ”€โ”€ open-link.svg
โ”œโ”€โ”€ compose.yaml
โ”œโ”€โ”€ dist
โ”‚   โ””โ”€โ”€ apps
โ”‚       โ””โ”€โ”€ personal-portfolio
โ”œโ”€โ”€ jest.config.ts
โ”œโ”€โ”€ jest.preset.js
โ”œโ”€โ”€ libs
โ”‚   โ”œโ”€โ”€ core-components
โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ”œโ”€โ”€ project.json
โ”‚   โ”‚   โ”œโ”€โ”€ src
โ”‚   โ”‚   โ”œโ”€โ”€ tsconfig.json
โ”‚   โ”‚   โ””โ”€โ”€ tsconfig.lib.json
โ”‚   โ””โ”€โ”€ store
โ”‚       โ”œโ”€โ”€ README.md
โ”‚       โ”œโ”€โ”€ project.json
โ”‚       โ”œโ”€โ”€ src
โ”‚       โ”œโ”€โ”€ tsconfig.json
โ”‚       โ””โ”€โ”€ tsconfig.lib.json
โ”œโ”€โ”€ nx.json
โ”œโ”€โ”€ package-lock.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tools
โ”‚   โ””โ”€โ”€ tsconfig.tools.json
โ””โ”€โ”€ tsconfig.base.json

โœ… Testing

Docker ๐Ÿณ

# Start the docker container if it's not running
$ docker start frontend

# unit tests
$ docker exec -it frontend npm run test

Non-Docker

# execute test
$ npm run test

๐Ÿ—๏ธ Progress

Branches Status
main โœ…
feat/* ๐Ÿšง

๐Ÿ‘ฅ Help

PRs are appreciated, I fully rely on the passion โค๏ธ of the OS developers.


License

This personal portfolio website is MIT licensed.

Author

personal-portfolio's People

Contributors

renovate-bot avatar msanvarov avatar renovate[bot] avatar dependabot[bot] avatar suyxhs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.