Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
dc3efd7
feat: Introduce Settings page
FinnTheHero Aug 24, 2025
785acf8
refactor: Improve UserContext authentication handling and types
FinnTheHero Aug 24, 2025
4db316a
style: Add horizontal padding to main content areas and minor layout …
FinnTheHero Aug 24, 2025
d489ff2
refactor(router): Improve 404 handling and add route comments
FinnTheHero Aug 24, 2025
44662e1
Refactor: Simplify AuthGuard user authentication logic
FinnTheHero Aug 25, 2025
7399012
Chore: Add App-wide dependencies and new page component imports
FinnTheHero Aug 25, 2025
d14dca6
Feat: Implement user settings page
FinnTheHero Aug 25, 2025
8b86e60
Feat: Add Settings and Upload links to Navbar
FinnTheHero Aug 25, 2025
8b2ad20
Feat: Apply user's selected font size to ChapterPage content
FinnTheHero Aug 25, 2025
022a4ca
feat: Introduce Settings page
FinnTheHero Aug 24, 2025
0a5058c
Refactor: Consolidate and reorder App.tsx imports
FinnTheHero Aug 25, 2025
bcb21d7
Feat: Implement user settings page
FinnTheHero Aug 25, 2025
78c8cf2
Auto stash before checking out "origin/master"
FinnTheHero Aug 26, 2025
5819da4
refactor: Improve UserContext authentication handling and types
FinnTheHero Aug 24, 2025
f21c5d6
style: Add horizontal padding to main content areas and minor layout …
FinnTheHero Aug 24, 2025
38a52f7
refactor(router): Improve 404 handling and add route comments
FinnTheHero Aug 24, 2025
8670d2d
Refactor: Simplify AuthGuard user authentication logic
FinnTheHero Aug 25, 2025
449655f
Chore: Add App-wide dependencies and new page component imports
FinnTheHero Aug 25, 2025
2d03afb
Feat: Implement user settings page
FinnTheHero Aug 25, 2025
50a61b9
Feat: Add Settings and Upload links to Navbar
FinnTheHero Aug 25, 2025
1317511
Feat: Apply user's selected font size to ChapterPage content
FinnTheHero Aug 25, 2025
849898b
feat: Introduce Settings page
FinnTheHero Aug 24, 2025
bf98a7c
Refactor: Consolidate and reorder App.tsx imports
FinnTheHero Aug 25, 2025
4c5a3bf
Feat: Implement user settings page
FinnTheHero Aug 25, 2025
0ac9909
Merge remote-tracking branch 'origin/development' into development
FinnTheHero Aug 26, 2025
0dad650
feat: Add comprehensive .dockerignore file
FinnTheHero Sep 3, 2025
2e65ede
feat: Add Nginx configuration for serving React app
FinnTheHero Sep 3, 2025
4236aa5
feat: Dockerize React app with multi-stage build and Nginx
FinnTheHero Sep 3, 2025
9dff87b
Updated api routes
FinnTheHero Sep 12, 2025
8feaee4
Simplifies content key logic
FinnTheHero Sep 25, 2025
1fcccae
Simplifies registration data handling
FinnTheHero Sep 25, 2025
91e20d9
File was auto updated by npm
FinnTheHero Sep 26, 2025
cdf34de
Refactor: `HandleErr` to throw errors instead of using context
FinnTheHero Sep 26, 2025
01a2621
refactor: Remove console.log from UserContext
FinnTheHero Sep 29, 2025
71cd29f
feat: Integrate sortBy for chapter fetching in ContentContext
FinnTheHero Sep 29, 2025
d13794a
refactor: Centralize and improve registration validation
FinnTheHero Sep 29, 2025
e2f24d8
Merge remote-tracking branch 'origin/development' into development
FinnTheHero Sep 29, 2025
6b73c88
refactor: Remove unused 'index' prop from ChapterCard
FinnTheHero Sep 29, 2025
b02af3f
fix(ui): Correct SVG attribute casing in ScrollButtons
FinnTheHero Sep 29, 2025
01723e3
feat(error): Improve global error handling in errorHandler
FinnTheHero Sep 29, 2025
88acb87
refactor(novel): Improve NovelPage description toggle and markdown re…
FinnTheHero Sep 29, 2025
a5dfa4c
feat: Implement dynamic chapter sorting
FinnTheHero Sep 29, 2025
abe09a2
feat: Add customizable chapter content padding
FinnTheHero Sep 29, 2025
07e815c
refactor: Replace SettingsDropdown with fixed SettingsSidebar
FinnTheHero Sep 29, 2025
b3612b9
chore: Apply minor UI/layout refinements
FinnTheHero Sep 29, 2025
56fafe1
feat: Expand font size options in settings sidebar
FinnTheHero Sep 29, 2025
a90f6d9
feat: Implement range slider for padding settings
FinnTheHero Sep 29, 2025
31494dd
refactor: Enhance settings sidebar interaction
FinnTheHero Sep 29, 2025
691eb28
Refactor: Remove legacy padding state from SettingsSidebar
FinnTheHero Sep 29, 2025
bc5393b
Feat: Implement dynamic chapter content width using padding percentage
FinnTheHero Sep 29, 2025
e3c2e86
Chore: Update default padding value in UserContext
FinnTheHero Sep 29, 2025
291027d
Feat: Revamp SettingsSidebar UI and enhance padding control
FinnTheHero Sep 29, 2025
a6c21c2
Style: Improve NovelPage layout and description toggle spacing
FinnTheHero Sep 29, 2025
0315bb7
Style: Center chapter title on ChapterPage
FinnTheHero Sep 29, 2025
ce42df6
Refactor: Adjust novel title container width on NovelPage
FinnTheHero Sep 29, 2025
409a8d4
feat: Adapt chapter navigation to user sort preference
FinnTheHero Sep 29, 2025
8530a9f
feat: Implement dynamic chapter navigation UI with sorting and icons
FinnTheHero Sep 29, 2025
7a697d5
fix(settings): Adjust sidebar popover and toggle positioning
FinnTheHero Sep 29, 2025
9a255ec
feat(novel): Improve novel page details responsiveness
FinnTheHero Sep 29, 2025
99e31ef
Chore: Adjust settings sidebar toggle position
FinnTheHero Sep 29, 2025
f8daa52
Refactor(ChapterPage): Add necessary type imports
FinnTheHero Sep 29, 2025
746649c
Feat(ChapterPage): Implement conditional navigation buttons
FinnTheHero Sep 29, 2025
fa5ce93
UI(ChapterPage): Refine layout and integrate top navigation
FinnTheHero Sep 29, 2025
1f24adb
feat(chapter): Add creation_date, author, and description to Chapter …
FinnTheHero Sep 29, 2025
06030c0
feat(chapter): Display chapter creation and update dates
FinnTheHero Sep 29, 2025
2e564f1
feat: Add new ProgressIndicator component
FinnTheHero Sep 29, 2025
b6c9798
feat: Integrate ProgressIndicator into ChapterPageLayout
FinnTheHero Sep 29, 2025
a349610
feat(AboutPage): Revamp content and styling for clarity
FinnTheHero Sep 29, 2025
417ac3f
feat: Increase NovelsPage maximum width and adjust padding
FinnTheHero Sep 29, 2025
6993f5c
feat: Enhance Popover positioning and responsiveness in SettingsSidebar
FinnTheHero Oct 1, 2025
ffc05e1
chore: Delete SettingsPage component file
FinnTheHero Oct 1, 2025
2234671
chore: Remove SettingsPage route and import from App.tsx
FinnTheHero Oct 1, 2025
bcf823c
chore: Remove Settings navigation links and related imports from Navbar
FinnTheHero Oct 1, 2025
abd2e37
feat: Improve UploadPage layout and add navigation
FinnTheHero Oct 1, 2025
a021caf
fix: Set default chapter content font to 'md'
FinnTheHero Oct 1, 2025
cf54ccf
feat: Enhance ChapterCard and NovelCard with interactive animations
FinnTheHero Oct 1, 2025
4456bda
feat: Add fillAnimation keyframes for UI effects
FinnTheHero Oct 1, 2025
1743d42
refactor(ChapterCard): Update navigation logic and remove click handler
FinnTheHero Oct 1, 2025
2d82bed
feat: Introduce ChapterProgress and NovelProgress types
FinnTheHero Oct 1, 2025
063e0ea
feat: Implement local storage cache for chapter reading progress
FinnTheHero Oct 1, 2025
e710fea
feat(deps): Add lodash and @types/lodash
FinnTheHero Oct 1, 2025
bab2de0
feat: Implement persistent scroll progress tracking in ProgressIndicator
FinnTheHero Oct 1, 2025
89382fa
feat: Display chapter reading progress in ChapterCard
FinnTheHero Oct 1, 2025
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
46 changes: 46 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Dependencies
node_modules
npm-debug.log*

# Production build (we'll create it in Docker)
dist
build

# Version control
.git
.gitignore

# IDE files
.vscode
.idea
*.swp
*.swo

# OS files
.DS_Store
Thumbs.db

# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage

# Docker files (don't copy Docker files into Docker)
Dockerfile
.dockerignore
docker-compose.yml

# Documentation
README.md
*.md

# GitHub
.github
58 changes: 58 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Multi-stage build for React app with Vite

# Stage 1: Build the application
FROM node:22-alpine AS builder

# Set working directory
WORKDIR /app

# Copy package files first for better caching
COPY package*.json ./

# Install dependencies
RUN npm ci --only=production=false

# Copy source code
COPY . .

COPY .env .env

# Build the application
RUN npm run build

# Stage 2: Serve the application with nginx
FROM nginx:alpine AS production

# Install security updates
RUN apk upgrade

# Create nginx user with specific UID for consistency
RUN addgroup -g 1001 -S nginx-group || true && \
adduser -u 1001 -D -S -s /bin/false -G nginx-group nginx-user || true

# Copy built assets from builder stage
COPY --from=builder /app/dist /usr/share/nginx/html

COPY ./nginx/nginx.conf /etc/nginx/nginx.conf

# Set proper permissions
RUN chown -R nginx:nginx /usr/share/nginx/html && \
chown -R nginx:nginx /var/cache/nginx && \
chown -R nginx:nginx /var/log/nginx && \
chown -R nginx:nginx /etc/nginx/conf.d

RUN touch /var/run/nginx.pid && \
chown -R nginx:nginx /var/run/nginx.pid

# Switch to nginx user
USER nginx

# Expose port 80
EXPOSE 80

# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:80/health || exit 1

# Start nginx
CMD ["nginx", "-g", "daemon off;"]
63 changes: 63 additions & 0 deletions nginx/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_max_body_size 16M;

# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json;

server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;

# SPA routing
location / {
try_files $uri $uri/ /index.html;
}

# Static files cache
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}

# Health check
location /health {
access_log off;
add_header Content-Type text/plain;
return 200 "healthy\n";
}

# Deny sensitive files
location ~ /\.(?!well-known) {
deny all;
}
}
}
Loading