more changes
This commit is contained in:
		
							parent
							
								
									19157d2e09
								
							
						
					
					
						commit
						1fe1bef1a9
					
				
					 10 changed files with 210 additions and 0 deletions
				
			
		
							
								
								
									
										7
									
								
								.dockerignore
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.dockerignore
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| Dockerfile | ||||
| .dockerignore | ||||
| node_modules | ||||
| npm-debug.log | ||||
| README.md | ||||
| .next | ||||
| .git | ||||
							
								
								
									
										57
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| # Install dependencies only when needed | ||||
| FROM node:16-alpine AS deps | ||||
| # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. | ||||
| RUN apk add --no-cache libc6-compat | ||||
| WORKDIR /app | ||||
| 
 | ||||
| # Install dependencies based on the preferred package manager | ||||
| COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ | ||||
| RUN \ | ||||
|     if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ | ||||
|     elif [ -f package-lock.json ]; then npm ci; \ | ||||
|     elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \ | ||||
|     else echo "Lockfile not found." && exit 1; \ | ||||
|     fi | ||||
| 
 | ||||
| 
 | ||||
| # Rebuild the source code only when needed | ||||
| FROM node:16-alpine AS builder | ||||
| WORKDIR /app | ||||
| COPY --from=deps /app/node_modules ./node_modules | ||||
| COPY . . | ||||
| 
 | ||||
| # Next.js collects completely anonymous telemetry data about general usage. | ||||
| # Learn more here: https://nextjs.org/telemetry | ||||
| # Uncomment the following line in case you want to disable telemetry during the build. | ||||
| # ENV NEXT_TELEMETRY_DISABLED 1 | ||||
| 
 | ||||
| RUN yarn build | ||||
| 
 | ||||
| # If using npm comment out above and use below instead | ||||
| # RUN npm run build | ||||
| 
 | ||||
| # Production image, copy all the files and run next | ||||
| FROM node:16-alpine AS runner | ||||
| WORKDIR /app | ||||
| 
 | ||||
| ENV NODE_ENV production | ||||
| # Uncomment the following line in case you want to disable telemetry during runtime. | ||||
| # ENV NEXT_TELEMETRY_DISABLED 1 | ||||
| 
 | ||||
| RUN addgroup --system --gid 1001 nodejs | ||||
| RUN adduser --system --uid 1001 nextjs | ||||
| 
 | ||||
| COPY --from=builder /app/public ./public | ||||
| 
 | ||||
| # Automatically leverage output traces to reduce image size | ||||
| # https://nextjs.org/docs/advanced-features/output-file-tracing | ||||
| COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ | ||||
| COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static | ||||
| 
 | ||||
| USER nextjs | ||||
| 
 | ||||
| EXPOSE 3000 | ||||
| 
 | ||||
| ENV PORT 3000 | ||||
| 
 | ||||
| CMD ["node", "server.js"] | ||||
							
								
								
									
										15
									
								
								components/Credits.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								components/Credits.tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| import Link from "next/link" | ||||
| 
 | ||||
| 
 | ||||
| const Credits = ({ credits }) => { | ||||
|     return ( | ||||
|         <Link | ||||
|             href={`https://${credits.url}`}> | ||||
|             <a>{credits.name}</a> | ||||
|         </Link> | ||||
|     ) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| export default Credits | ||||
							
								
								
									
										48
									
								
								components/Head.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								components/Head.tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| import NextHead from "next/head" | ||||
| 
 | ||||
| const Head = ({ redirect }: { redirect?: { url: string, site: string } }) => { | ||||
| 
 | ||||
|     return ( | ||||
|         <NextHead> | ||||
|             <link rel="icon" type="image/png" href="/assets/favicon.png" sizes="32x32" /> | ||||
|             <link rel="icon" type="image/png" href="/assets/favicon.png" sizes="96x96" /> | ||||
|             <link rel="icon" type="image/png" href="/assets/favicon.png" sizes="16x16" /> | ||||
|             <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon.png" /> | ||||
|             <title>heika.dog</title> | ||||
|             <meta name="theme-color" content="#FABD02 " /> | ||||
|             {!redirect && ( | ||||
|                 <> | ||||
|                     <meta property="og:title" content="heika.dog" /> | ||||
|                 </> | ||||
|             )} | ||||
|             {redirect && ( | ||||
|                 <> | ||||
|                     <meta property="og:title" content={` heika.dog on ${redirect.site}`} /> | ||||
|                 </> | ||||
|             )} | ||||
| 
 | ||||
|             <meta property="og:type" content="website" /> | ||||
|             <meta property="og:url" content="https://heika.dog" /> | ||||
|             <meta property="og:description" content="heikadog and heikadog accessories" /> | ||||
|             <meta property="og:image" content="/assets/favicon.png" /> | ||||
| 
 | ||||
|             <meta name="description" content="your one-stop shop for all things sor." /> | ||||
|             <meta name="keywords" content="heikadog, heika, music, producer, furry" /> | ||||
| 
 | ||||
|             <meta name="twitter:card" content="summary" /> | ||||
|             <meta name="twitter:image" content="https://heika.dog/assets/favicon.png" /> | ||||
|             <meta name="twitter:creator" content="@hkadogs" /> | ||||
| 
 | ||||
|             {redirect && ( | ||||
|                 <> | ||||
|                     <meta http-equiv="refresh" content={`2; url = ${redirect.url}`} /> | ||||
|                 </> | ||||
|             )} | ||||
| 
 | ||||
|         </NextHead> | ||||
|     ) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| export default Head | ||||
							
								
								
									
										19
									
								
								lib/constants.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lib/constants.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| const consts = { | ||||
|     socials: { | ||||
|         spotify: "https://open.spotify.com/playlist/52m7Bk2Lo0qGvzdn9Ecyjx?si=cba9a3a596a746d6", | ||||
|         soundcloud: "https://soundcloud.com/heikadog", | ||||
|         twitter: "https://twitter.com/heikadog", | ||||
|         discord: "https://discordapp.com/users/319164759478108170", | ||||
|         bandcamp: "https://heikadog.bandcamp.com/", | ||||
|         twitch: "https://twitch.tv/heikadog", | ||||
|         mail: "mailto:email@heika.dog", | ||||
|         teespring: "https://club-siberian.creator-spring.com/" | ||||
|     }, | ||||
|     music: { | ||||
|         special: "https://heikadog.bandcamp.com/album/specialty-endeavors", | ||||
|         sleepydogs: "https://distrokid.com/hyperfollow/heikadog/songs-for-dogs-to-sleep-to-ambient-2" | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| module.exports = consts | ||||
| module.default = consts | ||||
							
								
								
									
										12
									
								
								lib/socialRewrites.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								lib/socialRewrites.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| const c = require('./constants') | ||||
| 
 | ||||
| 
 | ||||
| const SocialRewrites = Object.keys(c.socials) | ||||
|     .map(b => { | ||||
|         return { | ||||
|             source: `/${b}`, | ||||
|             destination: `/socials/${b}` | ||||
|         } | ||||
|     }) | ||||
| 
 | ||||
| module.exports = SocialRewrites | ||||
							
								
								
									
										16
									
								
								next.config.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								next.config.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| // https://distrokid.com/hyperfollow/heikadog/songs-for-dogs-to-sleep-to-ambient-2module.exports = {
 | ||||
| const SocialRewrites = require("./lib/socialRewrites.js") | ||||
| 
 | ||||
| module.exports = { | ||||
|     // ... rest of the configuration.
 | ||||
|     output: 'standalone', | ||||
|     rewrites: async function () { | ||||
|         return [ | ||||
|             { | ||||
|                 source: "/favicon.ico", | ||||
|                 destination: "/assets/favicon.png" | ||||
|             }, | ||||
|             ...SocialRewrites | ||||
|         ] | ||||
|     } | ||||
| } | ||||
							
								
								
									
										36
									
								
								pages/socials/[social].tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								pages/socials/[social].tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| import constants from "lib/constants"; | ||||
| import Head from "components/Head"; | ||||
| import styles from "../../styles/Index.module.sass"; | ||||
| 
 | ||||
| const Social = (props) => { | ||||
|     return ( | ||||
|         <> | ||||
|             <Head redirect={props} /> | ||||
|             <div className={styles.center}> | ||||
|                 <p className={styles.name}> | ||||
|                     {props.site} | ||||
|                 </p> | ||||
|             </div> | ||||
|         </> | ||||
|     ); | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| export async function getStaticPaths() { | ||||
|     let socials = Object.keys(constants.socials).map(a => `/socials/${a}`) | ||||
|     return { | ||||
|         paths: [...socials], | ||||
|         fallback: false | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export async function getStaticProps({ params }) { | ||||
|     return { | ||||
|         props: { | ||||
|             site: params.social, | ||||
|             url: constants.socials[params.social] | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export default Social; | ||||
							
								
								
									
										
											BIN
										
									
								
								public/assets/Avatar.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/assets/Avatar.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 238 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/assets/website_background.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/assets/website_background.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.2 MiB | 
		Loading…
	
	Add table
		
		Reference in a new issue