Alvarian / portfolio

Software portfolio that features interaction with my apps. | Project type: Site | Presentable: :heavy_check_mark:

Home Page:https://alvarian.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Introduction

A full stack, NextJS(typescript), application that serves to be my portfolio. To help simplify the styling, I turned to Daisy UI to help with initial layouts and component abstractions. Section contents are dynamically loaded from third party API's, each pertaining to data from a personal records.

The API's are:

  • Badgr
  • Github API
  • Codewars
  • AWS S3 Bucket

Cloudflare is used aswell as a worker to call weekly to a portfolio's endpoint meant to refresh content and content persistance. Content persistance is possible with the use of redis on Upstash that gathers and all API data and also serving it primarily to the sections. Another additional is a logger API written in flask to notify me if the server has issues. These are optional for the next step.

Getting Started

Before getting started, make sure your device has terminal access to npm. Then start an account with codewars. Here is the list of all necessary variables in order for it to run:

NEXT_PUBLIC_S3_ROOT_URL=
NEXT_PUBLIC_BUCKET_NAME=
NEXT_PUBLIC_REGION_NAME=
NEXT_PUBLIC_ACCESS_SECRET_KEY=
NEXT_PUBLIC_ACCESS_KEY_ID=

NEXT_PUBLIC_CRYPTION_KEY=

NEXT_PUBLIC_GITHUB_TOKEN=

NEXT_PUBLIC_NOTIFICATION_MAILING_SERVICE=
NEXT_PUBLIC_REDIS_URL=

NEXT_PUBLIC_BADGR_PASS=
NEXT_PUBLIC_BADGR_USER=

Development

When done with setups run:

cp templateEnv.txt .env

npm install

Fill out all variables and run:

npm run dev

Optional

Setup a cloudflare worker and select quick edit. In the editor field, put the code below and deploy:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event));
})

addEventListener('scheduled', event => {
  event.waitUntil(handleRequest());
});

async function handleRequest(scheduledDate) {
  const res = await fetch('<APP_URL>/api/cache/refreshAllAndGetAllContent')

  return res
}

References

:octocat:

About

Software portfolio that features interaction with my apps. | Project type: Site | Presentable: :heavy_check_mark:

https://alvarian.dev


Languages

Language:TypeScript 98.6%Language:JavaScript 1.3%Language:CSS 0.1%