mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-10 04:22:27 +10:00
release: v4.1.0
This commit is contained in:
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -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])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user