Skip to content

Latest commit

 

History

History
96 lines (80 loc) · 2.95 KB

README.md

File metadata and controls

96 lines (80 loc) · 2.95 KB

Stack Ranger

Tell us with which stack want to work with and we will find the jobs for you. Or if you still know exactly which skills you should learn next, tell us about the job you are interested in and we will find the most relevant stack for you.

Link to the app

https://stack-ranger.herokuapp.com/

Tech Stack

The application is built with the following stack:

  • Next.js
  • Prisma
  • Postgres
  • tRPC
  • TailwindCSS

Setup

Install dependencies

yarn install

Setup postgres database

docker run postgres -p 5432:5432

Create a .env.local file and add the following variables:

DATABASE_URL="postgresql://USER:PASSWORD@localhost:5432/DATABASE?schema=public"
API_KEY="YOUR_API_KEY" #https://findwork.dev/api/jobs/

# Arbitrary string for the authorization header
AUTHORIZATION_HEADER="YOUR_AUTHORIZATION_HEADER" 

# Required for next-auth
GOOGLE_CLIENT_SECRET="YOUR_GOOGLE_CLIENT_SECRET"
GOOGLE_CLIENT_ID="YOUR_GOOGLE_CLIENT_ID"

Sync with the database

yarn prisma migrate dev --name init # sync with new db
yarn prisma db pull # sync with existing db
yarn prisma generate # create prisma client based on schema

Utils

A convenient way to interact with the database is to use the prisma studio

npx prisma studio

Run

yarn dev # start dev server on localhost:3000
yarn build # build for production
yarn start # start production server
yarn lint # run eslint

Trigger the microservice

Use the authorization header to trigger the microservice. (Note we used cron job via Gihub Actions to trigger )

curl --request GET \
          --url 'localhost:3000/api/microservice' \
        --header 'Authorization: <AUTHORIZATION_HEADER>'

Grading

Criteria Points
Regex 3
CSS Tailwind 5
Darkmode 5
Chart.js 5
Next.js (SSR) 20
UI-Components (styled components) 5
Typescript 10
tRPC 6
Authorization (Own auth and Google) 10
Host own DB (Postgres) 15
Deploy server in Docker container 10
Deploy additional Docker container (pgadmin) 10
Additional mirco-service (fetch jobs from API) 10

Additional potential points

  • Prisma (Object relational mapping) for full type safety and independence from db changes
  • Github Actions (build, deployment and cronjob)
  • Endless scroll (no library)
  • Auto suggestions for skill search on job search (no library)
  • State management using Zustand

Made with ❤️ at KTH