mirror of
				https://github.com/aurora-dot/pastel.codes.git
				synced 2025-11-04 09:01:34 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			fix-docker
			...
			8e45a864ea
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8e45a864ea | ||
| dec522c914 | |||
| b3aae82a2a | |||
| 
						 | 
					5a5cf6074c | 
@@ -4,5 +4,5 @@
 | 
			
		||||
  "tabWidth": 2,
 | 
			
		||||
  "singleQuote": true,
 | 
			
		||||
  "jsxSingleQuote": true,
 | 
			
		||||
  "plugins": ["prettier-plugin-tailwindcss"]
 | 
			
		||||
  "plugins": ["prettier-plugin-tailwindcss", "@prettier/plugin-pug"]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
FROM node:16-bullseye-slim
 | 
			
		||||
FROM node:21-bullseye-slim
 | 
			
		||||
 | 
			
		||||
ENV IS_DOCKER=true
 | 
			
		||||
ENV NODE_ENV=production
 | 
			
		||||
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
COPY ["package.json", "package-lock.json*", "./"]
 | 
			
		||||
RUN npm install --omit=dev
 | 
			
		||||
RUN npm install
 | 
			
		||||
RUN npm install nodemon
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN npm run build-tailwind
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										50
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -14,7 +14,7 @@
 | 
			
		||||
        "axios": "^1.6.8",
 | 
			
		||||
        "cookie-parser": "^1.4.5",
 | 
			
		||||
        "express": "^4.17.1",
 | 
			
		||||
        "express-rate-limit": "^5.2.6",
 | 
			
		||||
        "express-rate-limit": "^5.3.0",
 | 
			
		||||
        "hcaptcha": "^0.0.2",
 | 
			
		||||
        "helmet": "^4.6.0",
 | 
			
		||||
        "http-errors": "^1.8.0",
 | 
			
		||||
@@ -29,6 +29,7 @@
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
        "@eslint/js": "^9.1.1",
 | 
			
		||||
        "@prettier/plugin-pug": "^3.0.0",
 | 
			
		||||
        "eslint": "^9.1.1",
 | 
			
		||||
        "eslint-config-prettier": "^9.1.0",
 | 
			
		||||
        "globals": "^15.1.0",
 | 
			
		||||
@@ -347,6 +348,32 @@
 | 
			
		||||
        "node": ">= 8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@prettier/plugin-pug": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@prettier/plugin-pug/-/plugin-pug-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ERMMvGSJK/7CTc8OT7W/dtlV43sytyNeiCWckN0DIFepqwXotU0+coKMv5Wx6IWSNj7ZSjdNGBAA1nMPi388xw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "github",
 | 
			
		||||
          "url": "https://github.com/Shinigami92"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "type": "paypal",
 | 
			
		||||
          "url": "https://www.paypal.com/donate/?hosted_button_id=L7GY729FBKTZY"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "pug-lexer": "^5.0.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.13.0 || >=18.0.0",
 | 
			
		||||
        "npm": ">=7.10.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "prettier": "^3.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@sendgrid/client": {
 | 
			
		||||
      "version": "8.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.3.tgz",
 | 
			
		||||
@@ -1658,9 +1685,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/express-rate-limit": {
 | 
			
		||||
      "version": "5.2.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.2.6.tgz",
 | 
			
		||||
      "integrity": "sha512-nE96xaxGfxiS5jP3tD3kIW1Jg9yQgX0rXCs3rCkZtmbWHEGyotwaezkLj7bnB41Z0uaOLM8W4AX6qHao4IZ2YA=="
 | 
			
		||||
      "version": "5.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-qJhfEgCnmteSeZAeuOKQ2WEIFTX5ajrzE0xS6gCOBCoRQcU+xEzQmgYQQTpzCcqUAAzTEtu4YEih4pnLfvNtew=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/express/node_modules/cookie": {
 | 
			
		||||
      "version": "0.6.0",
 | 
			
		||||
@@ -5309,6 +5336,15 @@
 | 
			
		||||
        "fastq": "^1.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@prettier/plugin-pug": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@prettier/plugin-pug/-/plugin-pug-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ERMMvGSJK/7CTc8OT7W/dtlV43sytyNeiCWckN0DIFepqwXotU0+coKMv5Wx6IWSNj7ZSjdNGBAA1nMPi388xw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "pug-lexer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@sendgrid/client": {
 | 
			
		||||
      "version": "8.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.3.tgz",
 | 
			
		||||
@@ -6344,9 +6380,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "express-rate-limit": {
 | 
			
		||||
      "version": "5.2.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.2.6.tgz",
 | 
			
		||||
      "integrity": "sha512-nE96xaxGfxiS5jP3tD3kIW1Jg9yQgX0rXCs3rCkZtmbWHEGyotwaezkLj7bnB41Z0uaOLM8W4AX6qHao4IZ2YA=="
 | 
			
		||||
      "version": "5.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-qJhfEgCnmteSeZAeuOKQ2WEIFTX5ajrzE0xS6gCOBCoRQcU+xEzQmgYQQTpzCcqUAAzTEtu4YEih4pnLfvNtew=="
 | 
			
		||||
    },
 | 
			
		||||
    "fast-deep-equal": {
 | 
			
		||||
      "version": "3.1.3",
 | 
			
		||||
 
 | 
			
		||||
@@ -13,12 +13,12 @@
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "test": "echo \"Error: no test specified\" && exit 1",
 | 
			
		||||
    "dev": "npx nodemon ./bin/www -e js,pug,sass",
 | 
			
		||||
    "start": "npx ./bin/www -e js,pug,sass",
 | 
			
		||||
    "start": "npx nodemon ./bin/www -e js,pug,sass",
 | 
			
		||||
    "watch-tailwind": "npx npm-watch",
 | 
			
		||||
    "build-tailwind": "npx postcss src/tailwind.css -o public/stylesheets/style.css",
 | 
			
		||||
    "lint": "prettier --check . && eslint .",
 | 
			
		||||
    "format": "prettier --write --ignore-path .gitignore .",
 | 
			
		||||
    "prepare": "husky install"
 | 
			
		||||
    "husky-install": "husky install"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@sendgrid/mail": "^8.1.3",
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
    "axios": "^1.6.8",
 | 
			
		||||
    "cookie-parser": "^1.4.5",
 | 
			
		||||
    "express": "^4.17.1",
 | 
			
		||||
    "express-rate-limit": "^5.2.6",
 | 
			
		||||
    "express-rate-limit": "^5.3.0",
 | 
			
		||||
    "hcaptcha": "^0.0.2",
 | 
			
		||||
    "helmet": "^4.6.0",
 | 
			
		||||
    "http-errors": "^1.8.0",
 | 
			
		||||
@@ -42,6 +42,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@eslint/js": "^9.1.1",
 | 
			
		||||
    "@prettier/plugin-pug": "^3.0.0",
 | 
			
		||||
    "eslint": "^9.1.1",
 | 
			
		||||
    "eslint-config-prettier": "^9.1.0",
 | 
			
		||||
    "globals": "^15.1.0",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										139
									
								
								views/about.pug
									
									
									
									
									
								
							
							
						
						
									
										139
									
								
								views/about.pug
									
									
									
									
									
								
							@@ -1,70 +1,83 @@
 | 
			
		||||
extends layout
 | 
			
		||||
 | 
			
		||||
block nav-links
 | 
			
		||||
    a(href='/')
 | 
			
		||||
        li(class="py-3 bg-pink text-black hover:bg-black hover:text-pink transition duration-500 ease-in-out")
 | 
			
		||||
            span Home
 | 
			
		||||
    a(href='#')
 | 
			
		||||
        li(class="py-3 bg-black text-green hover:bg-pink hover:text-black transition duration-500 ease-in-out") 
 | 
			
		||||
            span About
 | 
			
		||||
    a(href='/obsidian/projects.html')
 | 
			
		||||
        li(class="py-3 bg-pink text-black hover:bg-black hover:text-pink transition duration-500 ease-in-out")
 | 
			
		||||
            span Obsidian
 | 
			
		||||
    a(href='https://github.com/aurora-dot')
 | 
			
		||||
        li(class="py-3 bg-pink text-black hover:bg-black hover:text-pink transition duration-500 ease-in-out")
 | 
			
		||||
            span Projects
 | 
			
		||||
    a(href='https://blog.pastel.codes')
 | 
			
		||||
        li(class="py-3 bg-pink text-black hover:bg-black hover:text-pink transition duration-500 ease-in-out")
 | 
			
		||||
            span Blog
 | 
			
		||||
    a(href='/contact')
 | 
			
		||||
        li(class="py-3 bg-pink text-black hover:bg-black hover:text-pink transition duration-500 ease-in-out")
 | 
			
		||||
            span Contact
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  a(href='/')
 | 
			
		||||
    li.py-3.bg-pink.text-black.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-black hover:text-pink'
 | 
			
		||||
    )
 | 
			
		||||
      span Home
 | 
			
		||||
  a(href='#')
 | 
			
		||||
    li.py-3.bg-black.text-green.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-pink hover:text-black'
 | 
			
		||||
    ) 
 | 
			
		||||
      span About
 | 
			
		||||
  a(href='/obsidian/projects.html')
 | 
			
		||||
    li.py-3.bg-pink.text-black.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-black hover:text-pink'
 | 
			
		||||
    )
 | 
			
		||||
      span Obsidian
 | 
			
		||||
  a(href='https://github.com/aurora-dot')
 | 
			
		||||
    li.py-3.bg-pink.text-black.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-black hover:text-pink'
 | 
			
		||||
    )
 | 
			
		||||
      span Projects
 | 
			
		||||
  a(href='https://blog.pastel.codes')
 | 
			
		||||
    li.py-3.bg-pink.text-black.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-black hover:text-pink'
 | 
			
		||||
    )
 | 
			
		||||
      span Blog
 | 
			
		||||
  a(href='/contact')
 | 
			
		||||
    li.py-3.bg-pink.text-black.transition.duration-500.ease-in-out(
 | 
			
		||||
      class='hover:bg-black hover:text-pink'
 | 
			
		||||
    )
 | 
			
		||||
      span Contact
 | 
			
		||||
 | 
			
		||||
block content
 | 
			
		||||
    div.mt-5
 | 
			
		||||
            div.text-lg
 | 
			
		||||
                h1.font-sans.text-6xl.wavy.mb-10 Hello.
 | 
			
		||||
                p.mb-5 I’m E, a 23-year-old full-stack developer with three years’ professional experience. I live in the UK.
 | 
			
		||||
                p.mb-5 I’m currently working at Bounce Technologies, where I contribute to or lead various projects using a bunch of different languages and technologies.
 | 
			
		||||
                p.mb-5 I also do UI/UX design and DevOps! I’m currently learning Go and adjusting to TypeScript.
 | 
			
		||||
                p.mb-5 In my spare time I create digital art and make electronic music. I also like to discover and play experimental and artistic video games.
 | 
			
		||||
                p.mb-5 Here are all of 
 | 
			
		||||
                    a(class=" text-green" href="/obsidian/projects.html") my projects
 | 
			
		||||
                    span  and my 
 | 
			
		||||
                        a(class=" text-green" href="https://github.com/aurora-dot/") GitHub
 | 
			
		||||
            if project
 | 
			
		||||
                div
 | 
			
		||||
                    h1.font-sans.text-6xl.wavy.my-10 Projects.
 | 
			
		||||
  .mt-5
 | 
			
		||||
    .text-lg
 | 
			
		||||
      h1.font-sans.text-6xl.wavy.mb-10 Hello.
 | 
			
		||||
      p.mb-5 I’m E, a 22-year-old full-stack developer with three years’ professional experience. I live in the UK.
 | 
			
		||||
      p.mb-5 I’m currently working at Bounce Technologies, where I contribute to or lead various projects using a bunch of different languages and technologies.
 | 
			
		||||
      p.mb-5 I also do UI/UX design and DevOps! I’m currently learning Go and adjusting to TypeScript.
 | 
			
		||||
      p.mb-5 In my spare time I create digital art and make electronic music. I also like to discover and play experimental and artistic video games.
 | 
			
		||||
      p.mb-5 Here are all of!{ ' ' }
 | 
			
		||||
        |
 | 
			
		||||
        a.text-green(href='/obsidian/projects.html') my projects
 | 
			
		||||
        span !{ ' ' } and my !{ ' ' }
 | 
			
		||||
          |
 | 
			
		||||
          a.text-green(href='https://github.com/aurora-dot/') GitHub
 | 
			
		||||
        | .
 | 
			
		||||
    if project
 | 
			
		||||
      div
 | 
			
		||||
        h1.font-sans.text-6xl.wavy.my-10 Projects.
 | 
			
		||||
 | 
			
		||||
                div
 | 
			
		||||
                    each val in project
 | 
			
		||||
                        div(class="mb-10 text-center sm:text-left")
 | 
			
		||||
                            div.contents
 | 
			
		||||
                                a(href=val.url).contents
 | 
			
		||||
                                    if val.feature_image
 | 
			
		||||
                                        img(class="sm:w-2/3 mx-auto sm:mx-0" src=val.feature_image)
 | 
			
		||||
                                    else
 | 
			
		||||
                                        img(src="/images/logo.png")
 | 
			
		||||
                            div.mt-2
 | 
			
		||||
                                a(href=val.url)
 | 
			
		||||
                                    span(class="font-sans text-2xl sm:text-3xl mt-3 mb-3") #{val.title}
 | 
			
		||||
                                p.text-lg #{val.excerpt}
 | 
			
		||||
      div
 | 
			
		||||
        each val in project
 | 
			
		||||
          .mb-10.text-center(class='sm:text-left')
 | 
			
		||||
            .contents
 | 
			
		||||
              a.contents(href=val.url)
 | 
			
		||||
                if val.feature_image
 | 
			
		||||
                  img.mx-auto(class='sm:w-2/3 sm:mx-0', src=val.feature_image)
 | 
			
		||||
                else
 | 
			
		||||
                  img(src='/images/logo.png')
 | 
			
		||||
            .mt-2
 | 
			
		||||
              a(href=val.url)
 | 
			
		||||
                span.font-sans.text-2xl.mt-3.mb-3(class='sm:text-3xl') #{ val.title }
 | 
			
		||||
              p.text-lg #{ val.excerpt }
 | 
			
		||||
 | 
			
		||||
            if blog
 | 
			
		||||
                div
 | 
			
		||||
                    h1.font-sans.text-6xl.wavy.my-10 Blog.
 | 
			
		||||
                div
 | 
			
		||||
                    each val in blog
 | 
			
		||||
                        div(class="mb-10 text-center sm:text-left")
 | 
			
		||||
                            div.contents
 | 
			
		||||
                                a(href=val.url).contents
 | 
			
		||||
                                    if val.feature_image
 | 
			
		||||
                                        img(class="sm:w-2/3 mx-auto sm:mx-0" src=val.feature_image)
 | 
			
		||||
                                    else
 | 
			
		||||
                                        img(src="/images/logo.png")
 | 
			
		||||
                            div.mt-2
 | 
			
		||||
                                a(href=val.url)
 | 
			
		||||
                                    span(class="font-sans text-2xl sm:text-3xl mt-3 mb-3") #{val.title}
 | 
			
		||||
                                p.text-lg #{val.excerpt}
 | 
			
		||||
    if blog
 | 
			
		||||
      div
 | 
			
		||||
        h1.font-sans.text-6xl.wavy.my-10 Blog.
 | 
			
		||||
      div
 | 
			
		||||
        each val in blog
 | 
			
		||||
          .mb-10.text-center(class='sm:text-left')
 | 
			
		||||
            .contents
 | 
			
		||||
              a.contents(href=val.url)
 | 
			
		||||
                if val.feature_image
 | 
			
		||||
                  img.mx-auto(class='sm:w-2/3 sm:mx-0', src=val.feature_image)
 | 
			
		||||
                else
 | 
			
		||||
                  img(src='/images/logo.png')
 | 
			
		||||
            .mt-2
 | 
			
		||||
              a(href=val.url)
 | 
			
		||||
                span.font-sans.text-2xl.mt-3.mb-3(class='sm:text-3xl') #{ val.title }
 | 
			
		||||
              p.text-lg #{ val.excerpt }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user