Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
0283c293ef
|
|||
8d75849c55 | |||
58b44dddad | |||
c9de531389 |
0
.dockerignore
Normal file → Executable file
0
.dockerignore
Normal file → Executable file
0
.editorconfig
Normal file → Executable file
0
.editorconfig
Normal file → Executable file
@ -1,46 +0,0 @@
|
||||
# These environment variables will be used by default if you do not create any
|
||||
# yourself in .env. This file should be safe to check into your version control
|
||||
# system. Any custom values should go in .env and .env should *not* be checked
|
||||
# into version control.
|
||||
|
||||
# location of the test database for api service scenarios (defaults to ./.redwood/test.db if not set)
|
||||
# TEST_DATABASE_URL=file:./.redwood/test.db
|
||||
|
||||
# disables Prisma CLI update notifier
|
||||
PRISMA_HIDE_UPDATE_MESSAGE=true
|
||||
|
||||
# Option to override the current environment's default api-side log level
|
||||
# See: https://redwoodjs.com/docs/logger for level options, defaults to "trace" otherwise.
|
||||
# Most applications want "debug" or "info" during dev, "trace" when you have issues and "warn" in production.
|
||||
# Ordered by how verbose they are: trace | debug | info | warn | error | silent
|
||||
# LOG_LEVEL=debug
|
||||
|
||||
FIRST_NAME=firstname
|
||||
LAST_NAME=lastname
|
||||
|
||||
DEFAULT_THEME=light
|
||||
|
||||
COUNTRY=US
|
||||
STATE=New York
|
||||
CITY=Manhattan
|
||||
|
||||
SMTP_HOST=smtp.example.com
|
||||
SMTP_PORT=465
|
||||
SMTP_SECURE=true
|
||||
SMTP_USER=noreply@example.com
|
||||
EMAIL_FROM=noreply@example.com
|
||||
EMAIL_TO=email@example.com
|
||||
SMTP_PASSWORD=password
|
||||
|
||||
DOMAIN=example.com
|
||||
API_DOMAIN=api.example.com
|
||||
|
||||
# Must not end with "/"
|
||||
ADDRESS_PROD=https://portfolio.example.com
|
||||
ADDRESS_DEV=http://localhost:8910
|
||||
API_ADDRESS_PROD=https://api-portfolio.example.com
|
||||
API_ADDRESS_DEV=http://localhost:8911
|
||||
|
||||
MAX_HTTP_CONNECTIONS_PER_MINUTE=60
|
||||
|
||||
DATABASE_URL=postgresql://user:password@localhost:5432/rw_portfolio
|
0
.env.example
Normal file → Executable file
0
.env.example
Normal file → Executable file
0
.gitea/workflows/ci.yml
Normal file → Executable file
0
.gitea/workflows/ci.yml
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.redwood/README.md
Normal file → Executable file
0
.redwood/README.md
Normal file → Executable file
0
.vscode/extensions.json
vendored
Normal file → Executable file
0
.vscode/extensions.json
vendored
Normal file → Executable file
0
.vscode/launch.json
vendored
Normal file → Executable file
0
.vscode/launch.json
vendored
Normal file → Executable file
0
.vscode/settings.json
vendored
Normal file → Executable file
0
.vscode/settings.json
vendored
Normal file → Executable file
0
.vscode/tasks.json
vendored
Normal file → Executable file
0
.vscode/tasks.json
vendored
Normal file → Executable file
0
.yarnrc.yml
Normal file → Executable file
0
.yarnrc.yml
Normal file → Executable file
3
Dockerfile
Normal file → Executable file
3
Dockerfile
Normal file → Executable file
@ -29,7 +29,6 @@ RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
|
||||
|
||||
COPY --chown=node:node redwood.toml .
|
||||
COPY --chown=node:node graphql.config.js .
|
||||
COPY --chown=node:node .env.defaults .env.defaults
|
||||
|
||||
# api build
|
||||
# ---------
|
||||
@ -115,7 +114,6 @@ RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
|
||||
|
||||
COPY --chown=node:node redwood.toml .
|
||||
COPY --chown=node:node graphql.config.js .
|
||||
COPY --chown=node:node .env.defaults .env.defaults
|
||||
|
||||
COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist
|
||||
COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db
|
||||
@ -155,7 +153,6 @@ RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
|
||||
|
||||
COPY --chown=node:node redwood.toml .
|
||||
COPY --chown=node:node graphql.config.js .
|
||||
COPY --chown=node:node .env.defaults .env.defaults
|
||||
|
||||
COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist
|
||||
|
||||
|
13
README.md
Normal file → Executable file
13
README.md
Normal file → Executable file
@ -16,6 +16,7 @@ services:
|
||||
portfolio:
|
||||
container_name: portfolio
|
||||
image: git.altaiar.dev/ahmed/portfolio:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- API_PROXY_TARGET=http://localhost:8911
|
||||
@ -44,7 +45,8 @@ services:
|
||||
- 8910:8910 # Web
|
||||
- 8911:8911 # API
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- files:/home/node/app/api/files_prod
|
||||
command: >
|
||||
@ -54,14 +56,19 @@ services:
|
||||
yarn rw prisma db seed &&
|
||||
yarn rw serve"
|
||||
|
||||
|
||||
db:
|
||||
container_name: portfolio-db
|
||||
image: postgres:16-bookworm
|
||||
environment:
|
||||
- POSTGRES_USER=redwood
|
||||
- POSTGRES_PASSWORD=changeme
|
||||
- POSTGRES_PASSWORD=changeme # Change to a more secure password
|
||||
- POSTGRES_DB=portfolio
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -d DATABASE_URL"] # Replace DATABASE_URL with the database URL from the portfolio container
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
volumes:
|
||||
- postgres:/var/lib/postgresql/data
|
||||
|
||||
|
0
api/db/migrations/20240810184713_user/migration.sql
Normal file → Executable file
0
api/db/migrations/20240810184713_user/migration.sql
Normal file → Executable file
0
api/db/migrations/20240819213158_social/migration.sql
Normal file → Executable file
0
api/db/migrations/20240819213158_social/migration.sql
Normal file → Executable file
0
api/db/migrations/20240821020900_portrait/migration.sql
Normal file → Executable file
0
api/db/migrations/20240821020900_portrait/migration.sql
Normal file → Executable file
0
api/db/migrations/20240824001030_project/migration.sql
Normal file → Executable file
0
api/db/migrations/20240824001030_project/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921164727_project_date_is_mandatory_default_today_12_am/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921164727_project_date_is_mandatory_default_today_12_am/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921181721_more_socials/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921181721_more_socials/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921183021_even_more_socials/migration.sql
Normal file → Executable file
0
api/db/migrations/20240921183021_even_more_socials/migration.sql
Normal file → Executable file
0
api/db/migrations/20240927031102_/migration.sql
Normal file → Executable file
0
api/db/migrations/20240927031102_/migration.sql
Normal file → Executable file
0
api/db/migrations/20240929164343_/migration.sql
Normal file → Executable file
0
api/db/migrations/20240929164343_/migration.sql
Normal file → Executable file
0
api/db/migrations/20241001005227_title_and_resume/migration.sql
Normal file → Executable file
0
api/db/migrations/20241001005227_title_and_resume/migration.sql
Normal file → Executable file
0
api/db/migrations/20241005014130_/migration.sql
Normal file → Executable file
0
api/db/migrations/20241005014130_/migration.sql
Normal file → Executable file
0
api/db/migrations/20241015183037_matrix/migration.sql
Normal file → Executable file
0
api/db/migrations/20241015183037_matrix/migration.sql
Normal file → Executable file
0
api/db/migrations/migration_lock.toml
Normal file → Executable file
0
api/db/migrations/migration_lock.toml
Normal file → Executable file
0
api/db/schema.prisma
Normal file → Executable file
0
api/db/schema.prisma
Normal file → Executable file
0
api/jest.config.js
Normal file → Executable file
0
api/jest.config.js
Normal file → Executable file
0
api/package.json
Normal file → Executable file
0
api/package.json
Normal file → Executable file
0
api/quick-lint-js.config
Normal file → Executable file
0
api/quick-lint-js.config
Normal file → Executable file
0
api/src/directives/requireAuth/requireAuth.ts
Normal file → Executable file
0
api/src/directives/requireAuth/requireAuth.ts
Normal file → Executable file
0
api/src/directives/skipAuth/skipAuth.ts
Normal file → Executable file
0
api/src/directives/skipAuth/skipAuth.ts
Normal file → Executable file
0
api/src/functions/auth.ts
Normal file → Executable file
0
api/src/functions/auth.ts
Normal file → Executable file
0
api/src/functions/graphql.ts
Normal file → Executable file
0
api/src/functions/graphql.ts
Normal file → Executable file
0
api/src/graphql/.keep
Normal file → Executable file
0
api/src/graphql/.keep
Normal file → Executable file
0
api/src/graphql/portrait.sdl.ts
Normal file → Executable file
0
api/src/graphql/portrait.sdl.ts
Normal file → Executable file
0
api/src/graphql/projects.sdl.ts
Normal file → Executable file
0
api/src/graphql/projects.sdl.ts
Normal file → Executable file
0
api/src/graphql/resume.sdl.ts
Normal file → Executable file
0
api/src/graphql/resume.sdl.ts
Normal file → Executable file
0
api/src/graphql/scalars.sdl.ts
Normal file → Executable file
0
api/src/graphql/scalars.sdl.ts
Normal file → Executable file
0
api/src/graphql/socials.sdl.ts
Normal file → Executable file
0
api/src/graphql/socials.sdl.ts
Normal file → Executable file
0
api/src/graphql/tags.sdl.ts
Normal file → Executable file
0
api/src/graphql/tags.sdl.ts
Normal file → Executable file
0
api/src/graphql/title.sdl.ts
Normal file → Executable file
0
api/src/graphql/title.sdl.ts
Normal file → Executable file
0
api/src/lib/auth.ts
Normal file → Executable file
0
api/src/lib/auth.ts
Normal file → Executable file
0
api/src/lib/cors.ts
Normal file → Executable file
0
api/src/lib/cors.ts
Normal file → Executable file
0
api/src/lib/db.ts
Normal file → Executable file
0
api/src/lib/db.ts
Normal file → Executable file
0
api/src/lib/email.ts
Normal file → Executable file
0
api/src/lib/email.ts
Normal file → Executable file
0
api/src/lib/logger.ts
Normal file → Executable file
0
api/src/lib/logger.ts
Normal file → Executable file
0
api/src/lib/tus.ts
Normal file → Executable file
0
api/src/lib/tus.ts
Normal file → Executable file
0
api/src/server.ts
Normal file → Executable file
0
api/src/server.ts
Normal file → Executable file
0
api/src/services/.keep
Normal file → Executable file
0
api/src/services/.keep
Normal file → Executable file
0
api/src/services/portrait/portrait.ts
Normal file → Executable file
0
api/src/services/portrait/portrait.ts
Normal file → Executable file
0
api/src/services/projects/projects.ts
Normal file → Executable file
0
api/src/services/projects/projects.ts
Normal file → Executable file
0
api/src/services/resume/resume.ts
Normal file → Executable file
0
api/src/services/resume/resume.ts
Normal file → Executable file
0
api/src/services/socials/socials.ts
Normal file → Executable file
0
api/src/services/socials/socials.ts
Normal file → Executable file
0
api/src/services/tags/tags.ts
Normal file → Executable file
0
api/src/services/tags/tags.ts
Normal file → Executable file
0
api/src/services/title/title.ts
Normal file → Executable file
0
api/src/services/title/title.ts
Normal file → Executable file
0
api/tsconfig.json
Normal file → Executable file
0
api/tsconfig.json
Normal file → Executable file
13
docker-compose.yml
Normal file → Executable file
13
docker-compose.yml
Normal file → Executable file
@ -4,6 +4,7 @@ services:
|
||||
portfolio:
|
||||
container_name: portfolio
|
||||
image: git.altaiar.dev/ahmed/portfolio:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- API_PROXY_TARGET=http://localhost:8911
|
||||
@ -32,7 +33,8 @@ services:
|
||||
- 8910:8910 # Web
|
||||
- 8911:8911 # API
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- files:/home/node/app/api/files_prod
|
||||
command: >
|
||||
@ -42,14 +44,19 @@ services:
|
||||
yarn rw prisma db seed &&
|
||||
yarn rw serve"
|
||||
|
||||
|
||||
db:
|
||||
container_name: portfolio-db
|
||||
image: postgres:16-bookworm
|
||||
environment:
|
||||
- POSTGRES_USER=redwood
|
||||
- POSTGRES_PASSWORD=changeme
|
||||
- POSTGRES_PASSWORD=changeme # Change to a more secure password
|
||||
- POSTGRES_DB=portfolio
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -d DATABASE_URL"] # Replace DATABASE_URL with the database URL from the portfolio container
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
volumes:
|
||||
- postgres:/var/lib/postgresql/data
|
||||
|
||||
|
0
graphql.config.js
Normal file → Executable file
0
graphql.config.js
Normal file → Executable file
0
jest.config.js
Normal file → Executable file
0
jest.config.js
Normal file → Executable file
0
package.json
Normal file → Executable file
0
package.json
Normal file → Executable file
0
prettier.config.mjs
Normal file → Executable file
0
prettier.config.mjs
Normal file → Executable file
0
redwood.toml
Normal file → Executable file
0
redwood.toml
Normal file → Executable file
0
scripts/.keep
Normal file → Executable file
0
scripts/.keep
Normal file → Executable file
0
scripts/seed.ts
Normal file → Executable file
0
scripts/seed.ts
Normal file → Executable file
0
scripts/tsconfig.json
Normal file → Executable file
0
scripts/tsconfig.json
Normal file → Executable file
0
web/config/postcss.config.js
Normal file → Executable file
0
web/config/postcss.config.js
Normal file → Executable file
0
web/config/tailwind.config.js
Normal file → Executable file
0
web/config/tailwind.config.js
Normal file → Executable file
0
web/jest.config.js
Normal file → Executable file
0
web/jest.config.js
Normal file → Executable file
0
web/package.json
Normal file → Executable file
0
web/package.json
Normal file → Executable file
0
web/public/README.md
Normal file → Executable file
0
web/public/README.md
Normal file → Executable file
0
web/public/favicon.png
Normal file → Executable file
0
web/public/favicon.png
Normal file → Executable file
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 757 B |
0
web/public/no_portrait.webp
Normal file → Executable file
0
web/public/no_portrait.webp
Normal file → Executable file
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
0
web/public/no_resume.pdf
Normal file → Executable file
0
web/public/no_resume.pdf
Normal file → Executable file
0
web/public/robots.txt
Normal file → Executable file
0
web/public/robots.txt
Normal file → Executable file
0
web/quick-lint-js.config
Normal file → Executable file
0
web/quick-lint-js.config
Normal file → Executable file
0
web/src/App.tsx
Normal file → Executable file
0
web/src/App.tsx
Normal file → Executable file
0
web/src/Routes.tsx
Normal file → Executable file
0
web/src/Routes.tsx
Normal file → Executable file
0
web/src/auth.ts
Normal file → Executable file
0
web/src/auth.ts
Normal file → Executable file
0
web/src/components/.keep
Normal file → Executable file
0
web/src/components/.keep
Normal file → Executable file
0
web/src/components/Cell/CellEmpty/CellEmpty.tsx
Normal file → Executable file
0
web/src/components/Cell/CellEmpty/CellEmpty.tsx
Normal file → Executable file
0
web/src/components/Cell/CellFailure/CellFailure.tsx
Normal file → Executable file
0
web/src/components/Cell/CellFailure/CellFailure.tsx
Normal file → Executable file
0
web/src/components/Cell/CellLoading/CellLoading.tsx
Normal file → Executable file
0
web/src/components/Cell/CellLoading/CellLoading.tsx
Normal file → Executable file
0
web/src/components/ColorPicker/ColorPicker.tsx
Normal file → Executable file
0
web/src/components/ColorPicker/ColorPicker.tsx
Normal file → Executable file
0
web/src/components/ContactCard/ContactCard/ContactCard.tsx
Normal file → Executable file
0
web/src/components/ContactCard/ContactCard/ContactCard.tsx
Normal file → Executable file
0
web/src/components/ContactCard/ContactCardCell/ContactCardCell.tsx
Normal file → Executable file
0
web/src/components/ContactCard/ContactCardCell/ContactCardCell.tsx
Normal file → Executable file
0
web/src/components/DatePicker/DatePicker.tsx
Normal file → Executable file
0
web/src/components/DatePicker/DatePicker.tsx
Normal file → Executable file
0
web/src/components/FormTextList/FormTextList.tsx
Normal file → Executable file
0
web/src/components/FormTextList/FormTextList.tsx
Normal file → Executable file
5
web/src/components/PDF/PDF.tsx
Normal file → Executable file
5
web/src/components/PDF/PDF.tsx
Normal file → Executable file
@ -23,13 +23,18 @@ const PDF = ({ url, form = false }: PDFProps) => {
|
||||
<iframe
|
||||
src={url}
|
||||
title="PDF"
|
||||
content="application/pdf"
|
||||
style={{
|
||||
width: 'calc(100vw - 1rem)',
|
||||
height: `calc(100vh - ${form ? '8.5rem' : '6rem'})`,
|
||||
}}
|
||||
allowFullScreen
|
||||
className="rounded-xl"
|
||||
onError={() => setError(true)}
|
||||
onLoad={() => setError(false)}
|
||||
sandbox="allow-same-origin allow-scripts allow-forms allow-popups"
|
||||
referrerPolicy="no-referrer-when-downgrade"
|
||||
loading="lazy"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
0
web/src/components/Portrait/PortraitCell/PortraitCell.tsx
Normal file → Executable file
0
web/src/components/Portrait/PortraitCell/PortraitCell.tsx
Normal file → Executable file
0
web/src/components/Portrait/PortraitForm/PortraitForm.tsx
Normal file → Executable file
0
web/src/components/Portrait/PortraitForm/PortraitForm.tsx
Normal file → Executable file
0
web/src/components/Project/AdminProject/AdminProject.tsx
Normal file → Executable file
0
web/src/components/Project/AdminProject/AdminProject.tsx
Normal file → Executable file
0
web/src/components/Project/AdminProjectCell/AdminProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/AdminProjectCell/AdminProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/EditProjectCell/EditProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/EditProjectCell/EditProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/NewProject/NewProject.tsx
Normal file → Executable file
0
web/src/components/Project/NewProject/NewProject.tsx
Normal file → Executable file
0
web/src/components/Project/Project/Project.tsx
Normal file → Executable file
0
web/src/components/Project/Project/Project.tsx
Normal file → Executable file
0
web/src/components/Project/ProjectCell/ProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/ProjectCell/ProjectCell.tsx
Normal file → Executable file
0
web/src/components/Project/ProjectForm/ProjectForm.tsx
Normal file → Executable file
0
web/src/components/Project/ProjectForm/ProjectForm.tsx
Normal file → Executable file
0
web/src/components/Project/Projects/Projects.tsx
Normal file → Executable file
0
web/src/components/Project/Projects/Projects.tsx
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user