diff --git a/.forgejo/workflows/build+release.yml b/.forgejo/workflows/build+release.yml deleted file mode 100644 index 2b43104..0000000 --- a/.forgejo/workflows/build+release.yml +++ /dev/null @@ -1,95 +0,0 @@ -name: 'Build and Release Docker Image' -author: 'Neshura' - -on: - push: - tags: - - '[0-9]+.[0-9]+.[0-9]+' - - '[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+' -jobs: - test: - runs-on: docker - steps: - - - name: Checking Out Repository Code - uses: https://code.forgejo.org/actions/checkout@v3 - - - name: Get Yarn Cache Directory - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - name: Set Up Yarn Cache - uses: actions/cache@v3 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Install Dependencies - run: yarn install - - - name: Run Linter - run: yarn lint - - - name: Check if Version in package.json matches Tag - run: | - VERSION=$(cat package.json | grep "version" | sed 's/.*://' | tr -d , | tr -d \" | tr -d " " ) - if test $VERSION != "${{ github.ref_name }}"; then - echo "Expected Version is: '${{ github.ref_name }}' actual Version is: '$VERSION'"; - exit 1 - else - echo "Version is: '$VERSION'"; - fi - - build: - needs: test - if: success() - runs-on: dind - steps: - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - config-inline: | - [registry."docker.io"] - mirrors = ["https://docker-cache.neshweb.net"] - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: forgejo.neshweb.net - username: ${{ secrets.FORGEJO_USERNAME }} - password: ${{ secrets.FORGEJO_TOKEN }} - - - name: Determine Docker tags - id: tags - run: | - if echo ${{ github.ref_name }} | grep -qi '\-rc' ; then - echo latest=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:preview >> $GITHUB_OUTPUT; - else - echo latest=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:latest >> $GITHUB_OUTPUT; - fi - echo version=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:${{ github.ref_name }} >> $GITHUB_OUTPUT; - - - name: Push to Package Registry - uses: docker/build-push-action@v5 - with: - push: true - tags: ${{ steps.tags.outputs.version }}, ${{ steps.tags.outputs.latest }} - - release: - needs: build - if: success() - runs-on: docker - steps: - - - name: Release New Version - uses: actions/forgejo-release@v1 - with: - direction: upload - url: https://forgejo.neshweb.net - release-dir: release - token: ${{ secrets.FORGEJO_TOKEN }} - tag: ${{ github.ref_name }} \ No newline at end of file diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml deleted file mode 100644 index 570d370..0000000 --- a/.forgejo/workflows/test.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: 'Run Tests on Code' -author: 'Neshura' - -on: - push: - tags-ignore: - - '**' - branches: - - '**' -jobs: - test: - runs-on: docker - steps: - - - name: Checking Out Repository Code - uses: https://code.forgejo.org/actions/checkout@v3 - - - name: Get Yarn Cache Directory - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - name: Set Up Yarn Cache - uses: actions/cache@v3 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Install Dependencies - run: yarn install - - - name: Run Linter - run: yarn lint \ No newline at end of file diff --git a/.gitignore b/.gitignore index 72d7a01..c29dfdc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,5 +17,3 @@ yarn-error.log* build/ data/ confs/ - -.idea/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..e8e1c18 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,65 @@ +stages: + - lint + #- test + - build + - deploy + +variables: + IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG + IMAGE_LATEST: $CI_REGISTRY_IMAGE:develop + + +.node: + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/node:latest + + +.docker: + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:20 + rules: + - if: $CI_COMMIT_TAG && $CI_COMMIT_TAG !~ /(^t)+.*/ + variables: + IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + - if: $CI_COMMIT_TAG + + +linter: + image: !reference [.node, image] + stage: lint + before_script: + - yarn install + script: + - yarn lint + + +build: + image: !reference [.docker, image] + stage: build + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker build -t $IMAGE_TAG . + after_script: + - docker save $IMAGE_TAG > docker.tar + artifacts: + expire_in: 30 mins + paths: + - docker.tar + rules: + - !reference [.docker, rules] + + +push: + image: !reference [.docker, image] + stage: deploy + needs: + - job: build + artifacts: true + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker load -i docker.tar + script: + - docker tag $IMAGE_TAG $IMAGE_LATEST + - docker push $IMAGE_TAG + - docker push $IMAGE_LATEST + rules: + - !reference [.docker, rules] diff --git a/Dockerfile b/Dockerfile index 645c82d..cc2de22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,17 @@ ## INIT STEP # Install dependencies only when needed -FROM node:18-alpine AS deps +FROM node:16-alpine AS deps RUN apk add --no-cache libc6-compat WORKDIR /app # Copy the files needed to install deps COPY package.json yarn.lock ./ -RUN yarn add sharp RUN yarn install --frozen-lockfile ## BUILD STEP # Rebuild the source code only when needed -FROM node:18-alpine AS builder +FROM node:16-alpine AS builder WORKDIR /app @@ -24,10 +23,10 @@ COPY . . RUN yarn build ## RUN STEP -FROM node:18-alpine AS runner +FROM node:16-alpine AS runner -LABEL author="neshura@neshweb.net" -WORKDIR /usr/src/app +LABEL author="neshura@proton.me" +WORKDIR /usr/src/ap ENV NODE_ENV production diff --git a/components/layout.tsx b/components/layout.tsx index 7425eee..6163070 100644 --- a/components/layout.tsx +++ b/components/layout.tsx @@ -11,12 +11,12 @@ const LayoutReadyOrNot = ({ children }: { children: React.ReactNode }) => { var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); - _paq.push(["setCookieDomain", "readyornot.neshweb.net"]); + _paq.push(["setCookieDomain", "readyornot.neshura-server.net"]); _paq.push(["disableCookies"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { - var u="//tracking.neshweb.net/"; + var u="//temp.neshura-server.net/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '2']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; diff --git a/components/sidebar.tsx b/components/sidebar.tsx index cf5e055..35386ec 100644 --- a/components/sidebar.tsx +++ b/components/sidebar.tsx @@ -17,9 +17,9 @@ const Sidebar = () => { const isMobile = useWindowSize(); const router = useRouter(); const [active, setActive] = useState(isMobile); - const { maps, isLoading, isError }: { maps: ReadyOrNotMap[], isLoading: boolean, isError: boolean } = useNavbar(); + const { maps, isLoading, isError }:{ maps: ReadyOrNotMap[], isLoading: boolean, isError: boolean} = useNavbar(); - if (typeof (isMobile) === "boolean" && typeof (active) === "undefined") { + if(typeof(isMobile) === "boolean" && typeof(active) === "undefined") { setActive(!isMobile); } @@ -47,15 +47,13 @@ const Sidebar = () => { return ( <> <div className={styles.sidebar} onClick={() => setActive(!active)}> - <div className={[styles.sl_wrapper, (active ? styles.sl_active : styles.sl_inactive)].join(" ")}> - <nav className={styles.sidebarList}> - {maps.map((item) => ( - <Link key={item.name} href={item.href}> - <a className={[styles.navElem, (router.query.map == item.href ? styles.ne_active : styles.ne_inactive)].join(" ")} onClick={stopPropagation}>{item.name}</a> - </Link> - ))} - </nav> - </div> + <nav className={[styles.sidebarList, (active ? styles.sl_active : styles.sl_inactive)].join(" ")}> + {maps.map((item) => ( + <Link key={item.name} href={item.href}> + <a className={[styles.navElem, (router.query.map == item.href ? styles.ne_active : styles.ne_inactive)].join(" ")} onClick={stopPropagation}>{item.name}</a> + </Link> + ))} + </nav> <div className={styles.sidebarArrow}> <Image src={active ? "/sidebar_arrow_flipped.webp" : "/sidebar_arrow.webp"} width={32} height={96} alt={active ? ">" : "<"} /> </div> diff --git a/package.json b/package.json index f5d1313..19e5582 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "readyornot", - "version": "0.1.8", + "version": "0.1.0", "private": true, "scripts": { - "dev:debug": "NODE_OPTIONS='--inspect' next dev -H :: -p 8002", - "dev": "next dev -H :: -p 8002", + "dev:debug": "NODE_OPTIONS='--inspect' next dev -p 4042", + "dev": "next dev", "build": "next build", - "start": "next start -H :: -p 8002", + "start": "next start", "lint": "next lint" }, "dependencies": { @@ -17,10 +17,9 @@ "swr": "^1.3.0" }, "devDependencies": { - "@types/node": "18.14.6", - "@types/react": "^18.0.14", "eslint": "^8.23.1", "eslint-config-next": "12.2.0", + "@types/react": "^18.0.14", "typescript": "4.9.3" } } diff --git a/pages/api/navbar.tsx b/pages/api/navbar.tsx index 1ec8953..18ea552 100644 --- a/pages/api/navbar.tsx +++ b/pages/api/navbar.tsx @@ -3,7 +3,7 @@ import fsPromises from 'fs/promises' import path from 'path' import ReadyOrNotMap from '../../interfaces/ReadyOrNot' -export default async function SidebarAPI(req: any, res: any) { +export default async function TobarApi(req: any, res: any) { try { // get list of all folders(maps) in the readyornot folder - maybe there is a cleaner way to do this? var fs = require('fs') diff --git a/styles/ReadyOrNot.module.css b/styles/ReadyOrNot.module.css index 9c46365..2577839 100644 --- a/styles/ReadyOrNot.module.css +++ b/styles/ReadyOrNot.module.css @@ -174,16 +174,15 @@ .sidebarList { overflow-y: scroll; - overflow-x: hidden; scrollbar-width: none; height: 100%; display: flex; flex-direction: column; + padding: 2rem; flex-wrap: nowrap; justify-content: flex-start; align-items: flex-start; background-color: var(--background_grey_opaque); - padding: 2rem; } .sidebar::-webkit-scrollbar { @@ -191,28 +190,15 @@ background: transparent; } -.sl_wrapper { - height: 100%; - overflow: hidden; - transition-property: width, visibility; - transition-timing-function: ease-in-out, linear; - transition-duration: 0.3s, 0s; -} - .sl_active { - visibility: visible; - width: 97%; - transition-delay: 0s, 0s; + display: flex; } .sl_inactive { - visibility: hidden; - width: 0; - transition-delay: 0s, 0.3s; + display: none; } .navElem { - white-space:nowrap; font-size: 14pt; width: auto; border-radius: 5px; diff --git a/yarn.lock b/yarn.lock index b9af874..23a6f54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -166,11 +166,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@18.14.6": - version "18.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" - integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== - "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"