From d32a6b412e60e1048e6cef2483e3e64e45a3c216 Mon Sep 17 00:00:00 2001 From: drake Date: Tue, 17 Dec 2024 19:26:53 -0600 Subject: [PATCH] app dev and CI --- .gitea/workflows/ci.yaml | 44 +++++++++++++++++++++++++++++++++++++++ .gitignore | 3 +++ Dockerfile | 11 ++++++++++ docker-compose.yml | 23 ++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- src/app.css | 26 +++++++++++++++++++++++ src/app.html | 1 + src/routes/+layout.svelte | 25 ++++++++++++++++------ src/routes/+page.svelte | 8 +++++-- src/stores/themeStore.ts | 18 ++++++++++++++++ static/themeGetter.ts | 9 ++++++++ 12 files changed, 162 insertions(+), 10 deletions(-) create mode 100644 .gitea/workflows/ci.yaml create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 src/stores/themeStore.ts create mode 100644 static/themeGetter.ts diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..bc884a7 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,44 @@ +name: ci + +on: + push: + branches: + - main + +jobs: + docker_image: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + + - name: Install Docker + run: curl -fsSL https://get.docker.com | sh + + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: git.marinodev.com + username: ${{ vars.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v6 + with: + push: true + tags: git.marinodev.com/marinodev/FBLA25:latest + + deploy: + runs-on: ubuntu-latest + needs: docker_image + steps: + - name: Restart Service + uses: https://github.com/appleboy/ssh-action@v1.0.3 + with: + host: ${{ vars.DEPLOY_HOST }} + username: ${{ vars.DEPLOY_USER }} + password: ${{ secrets.DEPLOY_PASSWORD }} + script: | + cd ${{ vars.DEPLOY_PATH }} + git pull + docker-compose down && docker-compose pull && docker-compose up -d \ No newline at end of file diff --git a/.gitignore b/.gitignore index dbf4cf2..1d0f077 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ Thumbs.db # Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* + +# Postgres +postgresql diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ccec4cf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM git.marinodev.com/MarinoDev/node_gitea_ci:latest + +RUN cd /srv && \ + git clone https://git.marinodev.com/MarinoDev/FBLA25.git +WORKDIR /srv/FBLA25 + +RUN npm ci --omit dev +RUN npm run build + +EXPOSE 8080 +ENTRYPOINT cd /srv/FBLA25 && PORT=8080 node build diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0fa1bfd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.8' + +services: + postgres: + image: postgres:17 + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: /run/secrets/postgres_password + ports: + - "5433:5432" + volumes: + - ./postgresql/data:/var/lib/postgresql/data + FBLA25: + image: git.marinodev.com/marinodev/FBLA25 + restart: on-failure + ports: + - "8002:8080" + +secrets: + postgres_password: + file: ./postgres/postgres_password.txt diff --git a/package-lock.json b/package-lock.json index 00180b3..eef9d32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "globals": "^15.0.0", "prettier": "^3.3.2", "prettier-plugin-svelte": "^3.2.6", - "prettier-plugin-tailwindcss": "^0.6.5", + "prettier-plugin-tailwindcss": "^0.6.9", "svelte": "^5.0.0", "svelte-check": "^4.0.0", "tailwindcss": "^3.4.9", diff --git a/package.json b/package.json index e05d9a0..500a691 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "globals": "^15.0.0", "prettier": "^3.3.2", "prettier-plugin-svelte": "^3.2.6", - "prettier-plugin-tailwindcss": "^0.6.5", + "prettier-plugin-tailwindcss": "^0.6.9", "svelte": "^5.0.0", "svelte-check": "^4.0.0", "tailwindcss": "^3.4.9", diff --git a/src/app.css b/src/app.css index a31e444..ceabe09 100644 --- a/src/app.css +++ b/src/app.css @@ -1,3 +1,29 @@ @import 'tailwindcss/base'; @import 'tailwindcss/components'; @import 'tailwindcss/utilities'; + +:root { + --text-color: #000000; + --bg-color: #f4f4f4; +} + +[data-theme='dark'] { + --text-color: #f4f4f4; + --bg-color: #010101; +} + +body { + background: var(--bg-color); + color: var(--text-color); +} + +h1 { + color: var(--text-color); + @apply text-4xl +} + +a { + @apply text-blue-500 +} + + diff --git a/src/app.html b/src/app.html index 9c5baff..ea96c07 100644 --- a/src/app.html +++ b/src/app.html @@ -9,6 +9,7 @@ %sveltekit.head% +
%sveltekit.body%
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index bd6f411..9d8106c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,13 +1,26 @@ - +
+ + +
-{@render children()} +
+ {@render children()} +
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index d434b54..f5b87c7 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1,6 @@ -

Welcome to SvelteKit

-

Test Text

+

Hello world

+ +
+

Test Text

+

hello

+
diff --git a/src/stores/themeStore.ts b/src/stores/themeStore.ts new file mode 100644 index 0000000..17060de --- /dev/null +++ b/src/stores/themeStore.ts @@ -0,0 +1,18 @@ +import { writable } from 'svelte/store'; +import { browser } from '$app/environment'; + +let storedTheme: string = 'light'; +if (browser) { + storedTheme = localStorage.getItem('theme') || 'light'; +} +export const theme = writable(storedTheme); + +theme.subscribe((value) => { + if (browser) { + localStorage.setItem('theme', value); + } +}); + +export function toggleTheme() { + theme.update((currentTheme) => (currentTheme === 'light' ? 'dark' : 'light')); +} diff --git a/static/themeGetter.ts b/static/themeGetter.ts new file mode 100644 index 0000000..f549516 --- /dev/null +++ b/static/themeGetter.ts @@ -0,0 +1,9 @@ +const saved_theme = localStorage.getItem('theme'); +if (saved_theme) { + document.body.setAttribute('data-theme', saved_theme); +} else { + const prefers_dark = window.matchMedia('(prefers-color-scheme: dark)').matches; + const theme = prefers_dark ? 'dark' : 'light'; + document.body.setAttribute('data-theme', theme); + localStorage.setItem('theme', theme); +}