Skip to content

DanielWilliamClarke/Cujo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A CV/Portfolio/Blog built in TypeScript using React, React PDF and P5JS. with a Rest / GraphQL backend written in Rust using Contentful for portfolio and blog content.



Dependencies

  • Node
  • NPM
  • Rust [Rustup, Rustc, Cargo]
  • Docker

Build Service Locally

# Service
cd service

# Once only
rustup default nightly

# Build Service
cargo build [--release]

# Run Service locally
ACCESS_TOKEN=token SPACE_ID=id ENVIRONMENT=env cargo run [--release]

# Test Service
cargo test [--release]

Build Portfolio Locally

# Run in WSL or linux
wsl

# Portfolio
cd portfolio

# Install Dependencies
npm install

# Build portfolio
npm run build

# Run Locally
npm run start # Requires service to be up!

Build Portfolio Image

export DOCKER_HUB_USER_REGISTRY=xyz

# With script
./scripts/build-portfolio.sh $DOCKER_HUB_USER_REGISTRY cujo-portfolio

# OR

# Build with Docker: Dev
docker build -f portfolio/Dockerfile -t $DOCKER_HUB_USER_REGISTRY/cujo-portfolio:latest ./portfolio
# Build with Docker: Prod
docker build -f portfolio/Dockerfile -t $DOCKER_HUB_USER_REGISTRY/cujo-portfolio:latest --build-arg BUILD_MODE=":prod" ./portfolio
# Push image
docker push $DOCKER_HUB_USER_REGISTRY/cujo-portfolio:latest

Build Service Image

export DOCKER_HUB_USER_REGISTRY=xyz

# With script
./scripts/build-service.sh $DOCKER_HUB_USER_REGISTRY cujo-rust

# OR

# Build with Docker
docker build -f service/Dockerfile -t $DOCKER_HUB_USER_REGISTRY/cujo-rust:latest ./service
# Push image
docker push $DOCKER_HUB_USER_REGISTRY/cujo-rust:latest

// Todo

  • Convert all pngs and jpgs to Avifs
  • Switch all gifs to WebMs
  • Add Rust code coverage
  • Write front end tests

// Done

  • Display a reading list
  • Remove Auth0 and redirecting with a Message broker queue subscription (Pubnub)
  • Remove Prenderer caching
  • Implement server side rendering and incremental static regeneration with NextJS
  • Swap NGINX and client side rendering for NextJS
  • Find out why all images are loading twice
  • Fixed huge react bundle sizes - it was react-icons the whole time
  • Swap React class components for React functional components
  • Use GraphQL client to frontend
  • Add a GraphQL API to backend
  • Trigger recache on contentful update
  • Get SEO and social media previews to work
  • Implement async system design
    • Cujo service now maintains a cache of contentful content
    • Requests from the website now read the cache only
    • Contentful webhooks now call the cujo service on content publish / unpublish
    • We authenticate the webhook POST request agaisnt Auth0
    • Redirect and validate the token so only authenticated clients can trigger a can regenerate the cache
  • Generate CV PDF from contentful content
  • Add new section to showcase and allow users to download an up to date copy of my CV PDF
  • Write blog
  • Add competency levels to skills and visualise
  • Move CV fully to Contentful and have backend collect CV data
  • Update color scheme to be less dark
  • Replace WordPress with Contentful to reduce need to host own content and infrastructure
  • Responsive and styled Nav
  • Restyle experience and education so they resemble a timeline
  • Add auto redeployment of new images pushed for prod
  • Create Circle CI build pipeline
  • Optimize images (sizes, file encodings - https://developers.google.com/speed/pagespeed/insights/)
  • Add authentication to wordpress rest api
  • Write backend tests
  • Get backend service working in prod
  • Document backend build and deployment
  • Put Blog data access and collation in backend service
  • Swap backstretch with a 2d/3d WEBGL canvas visualisation?
  • Swap out static file with Rust backend service?
  • Formalise colour palette
  • Setup SSL correctly.. (ssl-companion is running, it will assign certificates when the window opens again)
  • Fix predator/prey image asset
  • Finish contact page
  • Add site footer
  • Proof read profile
  • Add asset citations (now using my own images or free stock images only)
  • Produce production build for deployment
  • Move sharing bar to bottom on mobile devices

Visualisations

  • 3D Box wave
  • Waves
  • Hexagons
  • Phylotaxis
  • 4D tesseract projection?
  • Conway's game of life

Urls

Third Parties

Resources