Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules
dist
.git
.env
.gitignore
README.md
*.md
1 change: 0 additions & 1 deletion .env

This file was deleted.

1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ VITE_TMDB_TOKEN=your_tmdb_api_read_access_token_here
# Supabase (required for backend)
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key_here
VITE_SUPABASE_SERVICE_KEY=your_supabase_service_role_key_here

# Paystack (required for payments)
VITE_PAYSTACK_PUBLIC_KEY=your_paystack_public_key_here
42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- run: npm ci

- run: npm run lint

- run: npm run test

- run: npm run build

deploy:
if: github.ref == 'refs/heads/main'
needs: build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'
12 changes: 12 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:1.27-alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Discover, buy, and sell your favorite entertainment media in one beautiful dark-
| **State** | React Context (Cart, Wishlist, Auth) |
| **Payments** | Paystack inline popup |
| **Database** | Supabase (PostgreSQL) |
| **Data Sources** | TMDB API (movies), Open Library (books), Jikan API (manga), Comic Vine (comics) |
| **Data Sources** | TMDB API (movies), Google Books API (books), Jikan API (manga), Open Library (comics) |
| **Build** | Vite 8 (Rolldown) |
| **Auth** | Supabase Auth (email/password + Google OAuth) |

Expand Down
10 changes: 9 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="manifest" href="/manifest.json" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>cineverse</title>
<meta name="theme-color" content="#8b5cf6" />
<meta name="description" content="CineVerse — Discover, buy, and sell movies, books, manga, and comics. A modern e-commerce marketplace with Paystack payments." />
<meta property="og:title" content="CineVerse — Movies, Books, Manga & Comics" />
<meta property="og:description" content="Discover, buy, and sell your favorite entertainment media in one beautiful dark-themed marketplace." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://cineverse.app" />
<link rel="canonical" href="https://cineverse.app" />
<title>CineVerse — Movies, Books, Manga &amp; Comics</title>
</head>
<body>
<div id="root"></div>
Expand Down
14 changes: 14 additions & 0 deletions nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
server {
listen 80;
root /usr/share/nginx/html;
index index.html;

location / {
try_files $uri $uri/ /index.html;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff2?)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Loading
Loading