release: v4.1.0

This commit is contained in:
Amruth Pillai
2024-05-05 14:55:06 +02:00
parent 68252c35fc
commit e87b05a93a
282 changed files with 11461 additions and 10713 deletions

View File

@ -30,7 +30,7 @@ services:
command: server /data
ports:
- ${STORAGE_PORT:-9000}:9000
- 9001:9001 # Minio Console (Optional)
- "9001:9001" # Minio Console (Optional)
volumes:
- minio_data:/data
environment:
@ -52,17 +52,6 @@ services:
EXIT_ON_HEALTH_FAILURE: true
PRE_REQUEST_HEALTH_CHECK: true
# Redis (for cache & server session management)
redis:
image: redis:alpine
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD:-password}
ports:
- ${REDIS_PORT:-6379}:6379
volumes:
- redis_data:/data
volumes:
minio_data:
redis_data:
postgres_data:

View File

@ -48,21 +48,12 @@ services:
EXIT_ON_HEALTH_FAILURE: true
PRE_REQUEST_HEALTH_CHECK: true
# Redis (for cache & server session management)
redis:
image: redis:alpine
restart: unless-stopped
command: redis-server --save 60 1 --loglevel warning --requirepass password
volumes:
- redis_data:/data
app:
image: amruthpillai/reactive-resume:latest
restart: unless-stopped
depends_on:
- postgres
- minio
- redis
- chrome
environment:
# -- Environment Variables --
@ -97,37 +88,36 @@ services:
STORAGE_SECRET_KEY: minioadmin
STORAGE_USE_SSL: false
# -- Cache (Redis) --
REDIS_URL: redis://default:password@redis:6379
# -- Sentry --
# VITE_SENTRY_DSN: https://id.sentry.io # Optional
# -- Sentry (Optional) --
# SERVER_SENTRY_DSN:
# VITE_CLIENT_SENTRY_DSN:
# -- Crowdin (Optional) --
# CROWDIN_PROJECT_ID:
# CROWDIN_PERSONAL_TOKEN:
# -- Email (Optional) --
# -- Flags (Optional) --
# DISABLE_EMAIL_AUTH: true
# VITE_DISABLE_SIGNUPS: true
# SKIP_STORAGE_BUCKET_CHECK: false
# -- GitHub (Optional) --
GITHUB_CLIENT_ID: github_client_id
GITHUB_CLIENT_SECRET: github_client_secret
GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# GITHUB_CLIENT_ID: github_client_id
# GITHUB_CLIENT_SECRET: github_client_secret
# GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# -- Google (Optional) --
GOOGLE_CLIENT_ID: google_client_id
GOOGLE_CLIENT_SECRET: google_client_secret
GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
# GOOGLE_CLIENT_ID: google_client_id
# GOOGLE_CLIENT_SECRET: google_client_secret
# GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
nginx:
image: jc21/nginx-proxy-manager
restart: always
ports:
- 80:80
- 443:443
- 81:81 # Port 81 is used for Proxy Manager's Web UI
- "80:80"
- "443:443"
- "81:81" # Port 81 is used for Proxy Manager's Web UI
volumes:
- nginx_data:/data
- letsencrypt_data:/etc/letsencrypt
@ -136,7 +126,6 @@ services:
volumes:
minio_data:
redis_data:
nginx_data:
postgres_data:
letsencrypt_data:

View File

@ -27,7 +27,7 @@ services:
restart: unless-stopped
command: server /data
ports:
- 9000:9000
- "9000:9000"
volumes:
- minio_data:/data
environment:
@ -45,21 +45,14 @@ services:
EXIT_ON_HEALTH_FAILURE: true
PRE_REQUEST_HEALTH_CHECK: true
# Redis (for cache & server session management)
redis:
image: redis:alpine
restart: unless-stopped
command: redis-server --requirepass password
app:
image: amruthpillai/reactive-resume:latest
restart: unless-stopped
ports:
- 3000:3000
- "3000:3000"
depends_on:
- postgres
- minio
- redis
- chrome
environment:
# -- Environment Variables --
@ -94,11 +87,9 @@ services:
STORAGE_SECRET_KEY: minioadmin
STORAGE_USE_SSL: false
# -- Cache (Redis) --
REDIS_URL: redis://default:password@redis:6379
# -- Sentry --
# VITE_SENTRY_DSN: https://id.sentry.io # Optional
# -- Sentry (Optional) --
# SERVER_SENTRY_DSN:
# VITE_CLIENT_SENTRY_DSN:
# -- Crowdin (Optional) --
# CROWDIN_PROJECT_ID:
@ -107,16 +98,17 @@ services:
# -- Email (Optional) --
# DISABLE_EMAIL_AUTH: true
# VITE_DISABLE_SIGNUPS: true
# SKIP_STORAGE_BUCKET_CHECK: false
# -- GitHub (Optional) --
GITHUB_CLIENT_ID: github_client_id
GITHUB_CLIENT_SECRET: github_client_secret
GITHUB_CALLBACK_URL: http://localhost:3000/api/auth/github/callback
# GITHUB_CLIENT_ID: github_client_id
# GITHUB_CLIENT_SECRET: github_client_secret
# GITHUB_CALLBACK_URL: http://localhost:3000/api/auth/github/callback
# -- Google (Optional) --
GOOGLE_CLIENT_ID: google_client_id
GOOGLE_CLIENT_SECRET: google_client_secret
GOOGLE_CALLBACK_URL: http://localhost:3000/api/auth/google/callback
# GOOGLE_CLIENT_ID: google_client_id
# GOOGLE_CLIENT_SECRET: google_client_secret
# GOOGLE_CALLBACK_URL: http://localhost:3000/api/auth/google/callback
volumes:
minio_data:

View File

@ -70,19 +70,6 @@ services:
- traefik.http.routers.printer.tls.certresolver=letsencrypt
- traefik.http.services.printer.loadbalancer.server.port=3000
# Redis (for cache & server session management)
redis:
image: redis:alpine
command: redis-server --save 60 1 --loglevel warning --bind 0.0.0.0 --requirepass password
networks:
- reactive_resume_network
volumes:
- redis_data:/data
deploy:
replicas: 1
restart_policy:
condition: on-failure
app:
image: amruthpillai/reactive-resume:latest
networks:
@ -120,29 +107,28 @@ services:
STORAGE_SECRET_KEY: minioadmin
STORAGE_USE_SSL: false
# -- Cache (Redis) --
REDIS_URL: redis://default:password@redis:6379
# -- Sentry --
# VITE_SENTRY_DSN: https://id.sentry.io # Optional
# -- Sentry (Optional) --
# SERVER_SENTRY_DSN:
# VITE_CLIENT_SENTRY_DSN:
# -- Crowdin (Optional) --
CROWDIN_PROJECT_ID:
CROWDIN_PERSONAL_TOKEN:
# CROWDIN_PROJECT_ID:
# CROWDIN_PERSONAL_TOKEN:
# -- Email (Optional) --
# -- Flags (Optional) --
# DISABLE_EMAIL_AUTH: true
# VITE_DISABLE_SIGNUPS: true
# SKIP_STORAGE_BUCKET_CHECK: false
# -- GitHub (Optional) --
GITHUB_CLIENT_ID: github_client_id
GITHUB_CLIENT_SECRET: github_client_secret
GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# GITHUB_CLIENT_ID: github_client_id
# GITHUB_CLIENT_SECRET: github_client_secret
# GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# -- Google (Optional) --
GOOGLE_CLIENT_ID: google_client_id
GOOGLE_CLIENT_SECRET: google_client_secret
GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
# GOOGLE_CLIENT_ID: google_client_id
# GOOGLE_CLIENT_SECRET: google_client_secret
# GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
deploy:
replicas: 2
restart_policy:
@ -175,9 +161,9 @@ services:
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
ports:
- 80:80
- 443:443
- 8080:8080
- "80:80"
- "443:443"
- "8080:8080"
networks:
- reactive_resume_network
volumes:
@ -189,7 +175,6 @@ services:
volumes:
minio_data:
redis_data:
postgres_data:
letsencrypt_data:

View File

@ -56,21 +56,12 @@ services:
- traefik.http.routers.printer.tls.certresolver=letsencrypt
- traefik.http.services.printer.loadbalancer.server.port=3000
# Redis (for cache & server session management)
redis:
image: redis:alpine
restart: unless-stopped
command: redis-server --save 60 1 --loglevel warning --requirepass password
volumes:
- redis_data:/data
app:
image: amruthpillai/reactive-resume:latest
restart: unless-stopped
depends_on:
- postgres
- minio
- redis
- chrome
environment:
# -- Environment Variables --
@ -105,29 +96,28 @@ services:
STORAGE_SECRET_KEY: minioadmin
STORAGE_USE_SSL: false
# -- Cache (Redis) --
REDIS_URL: redis://default:password@redis:6379
# -- Sentry --
# VITE_SENTRY_DSN: https://id.sentry.io # Optional
# -- Sentry (Optional) --
# SERVER_SENTRY_DSN:
# VITE_CLIENT_SENTRY_DSN:
# -- Crowdin (Optional) --
# CROWDIN_PROJECT_ID:
# CROWDIN_PERSONAL_TOKEN:
# -- Email (Optional) --
# -- Flags (Optional) --
# DISABLE_EMAIL_AUTH: true
# VITE_DISABLE_SIGNUPS: true
# SKIP_STORAGE_BUCKET_CHECK: false
# -- GitHub (Optional) --
GITHUB_CLIENT_ID: github_client_id
GITHUB_CLIENT_SECRET: github_client_secret
GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# GITHUB_CLIENT_ID: github_client_id
# GITHUB_CLIENT_SECRET: github_client_secret
# GITHUB_CALLBACK_URL: https://example.com/api/auth/github/callback
# -- Google (Optional) --
GOOGLE_CLIENT_ID: google_client_id
GOOGLE_CLIENT_SECRET: google_client_secret
GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
# GOOGLE_CLIENT_ID: google_client_id
# GOOGLE_CLIENT_SECRET: google_client_secret
# GOOGLE_CALLBACK_URL: https://example.com/api/auth/google/callback
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=Host(`example.com`)
@ -154,14 +144,13 @@ services:
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
ports:
- 80:80
- 443:443
- "80:80"
- "443:443"
volumes:
- letsencrypt_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock
volumes:
minio_data:
redis_data:
postgres_data:
letsencrypt_data:

View File

@ -52,19 +52,12 @@ services:
- traefik.http.routers.printer.rule=Host(`printer.example.com`)
- traefik.http.services.printer.loadbalancer.server.port=3000
# Redis (for cache & server session management)
redis:
image: redis:alpine
restart: unless-stopped
command: redis-server --requirepass password
app:
image: amruthpillai/reactive-resume:latest
restart: unless-stopped
depends_on:
- postgres
- minio
- redis
- chrome
environment:
# -- Environment Variables --
@ -99,29 +92,28 @@ services:
STORAGE_SECRET_KEY: minioadmin
STORAGE_USE_SSL: false
# -- Cache (Redis) --
REDIS_URL: redis://default:password@redis:6379
# -- Sentry --
# VITE_SENTRY_DSN: https://id.sentry.io # Optional
# -- Sentry (Optional) --
# SERVER_SENTRY_DSN:
# VITE_CLIENT_SENTRY_DSN:
# -- Crowdin (Optional) --
# CROWDIN_PROJECT_ID:
# CROWDIN_PERSONAL_TOKEN:
# -- Email (Optional) --
# -- Flags (Optional) --
# DISABLE_EMAIL_AUTH: true
# VITE_DISABLE_SIGNUPS: true
# SKIP_STORAGE_BUCKET_CHECK: false
# -- GitHub (Optional) --
GITHUB_CLIENT_ID: github_client_id
GITHUB_CLIENT_SECRET: github_client_secret
GITHUB_CALLBACK_URL: http://example.com/api/auth/github/callback
# GITHUB_CLIENT_ID: github_client_id
# GITHUB_CLIENT_SECRET: github_client_secret
# GITHUB_CALLBACK_URL: http://example.com/api/auth/github/callback
# -- Google (Optional) --
GOOGLE_CLIENT_ID: google_client_id
GOOGLE_CLIENT_SECRET: google_client_secret
GOOGLE_CALLBACK_URL: http://example.com/api/auth/google/callback
# GOOGLE_CLIENT_ID: google_client_id
# GOOGLE_CLIENT_SECRET: google_client_secret
# GOOGLE_CALLBACK_URL: http://example.com/api/auth/google/callback
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=Host(`example.com`)
@ -135,7 +127,7 @@ services:
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- 80:80
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock

View File

@ -0,0 +1,29 @@
/*
Warnings:
- A unique constraint covering the columns `[userId,id]` on the table `Secrets` will be added. If there are existing duplicate values, this will fail.
*/
-- CreateTable
CREATE TABLE "Statistics" (
"id" TEXT NOT NULL,
"views" INTEGER NOT NULL DEFAULT 0,
"downloads" INTEGER NOT NULL DEFAULT 0,
"resumeId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Statistics_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Statistics_resumeId_key" ON "Statistics"("resumeId");
-- CreateIndex
CREATE UNIQUE INDEX "Statistics_resumeId_id_key" ON "Statistics"("resumeId", "id");
-- CreateIndex
CREATE UNIQUE INDEX "Secrets_userId_id_key" ON "Secrets"("userId", "id");
-- AddForeignKey
ALTER TABLE "Statistics" ADD CONSTRAINT "Statistics_resumeId_fkey" FOREIGN KEY ("resumeId") REFERENCES "Resume"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -45,21 +45,36 @@ model Secrets {
resetToken String? @unique
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([userId, id])
}
model Resume {
id String @id @default(cuid())
id String @id @default(cuid())
title String
slug String
data Json @default("{}")
visibility Visibility @default(private)
locked Boolean @default(false)
data Json @default("{}")
visibility Visibility @default(private)
locked Boolean @default(false)
statistics Statistics?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([userId, id])
@@unique([userId, slug])
@@index(fields: [userId])
}
model Statistics {
id String @id @default(cuid())
views Int @default(0)
downloads Int @default(0)
resumeId String @unique
resume Resume @relation(fields: [resumeId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([resumeId, id])
}