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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 4 additions & 0 deletions frontends/auth/react-scss/src/core/app/shell.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// shell.module.scss
// ===================
4 changes: 4 additions & 0 deletions frontends/auth/react-scss/src/core/app/toast.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// toast.module.scss
// ===================
4 changes: 4 additions & 0 deletions frontends/auth/react-scss/src/pages/admin/admin.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// admin.module.scss
// ===================
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// dashboard.module.scss
// ===================
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// landing.module.scss
// ===================
4 changes: 4 additions & 0 deletions frontends/auth/react-scss/src/pages/login/login.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// login.module.scss
// ===================
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// register.module.scss
// ===================
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// ===================
// © AngelaMos | 2026
// settings.module.scss
// ===================
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// ===================
// © AngelaMos | 2025
// © AngelaMos | 2026
// styles.scss
// ===================

Expand All @@ -8,22 +8,16 @@
@forward 'styles/mixins';

@use 'styles/reset';
@use 'styles/tokens' as *;
@use 'styles/fonts' as *;

#root {
min-height: 100vh;
min-height: 100dvh;
display: flex;
flex-direction: column;
background: $bg-default;
}

.app {
flex: 1;
display: flex;
flex-direction: column;
background: $bg-default;
color: $text-default;
font-family: $font-sans;
}
105 changes: 105 additions & 0 deletions frontends/auth/react-scss/src/styles/_reset.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// ===================
// © AngelaMos | 2026
// _reset.scss
// ===================

*,
*::before,
*::after {
box-sizing: border-box;
}

* {
margin: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
}

html {
font-size: 16px;
-moz-text-size-adjust: none;
-webkit-text-size-adjust: none;
text-size-adjust: none;
overflow-x: hidden;
}

@media (prefers-reduced-motion: no-preference) {
html {
interpolate-size: allow-keywords;
scroll-behavior: smooth;
}
}

body {
min-height: 100vh;
min-height: 100dvh;
line-height: 1.5;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
background-color: #fff;
color: #000;
}

h1,
h2,
h3,
h4,
h5,
h6 {
line-height: 1.2;
text-wrap: balance;
overflow-wrap: break-word;
}

p {
text-wrap: pretty;
overflow-wrap: break-word;
}

img,
picture,
video,
canvas,
svg {
display: block;
max-width: 100%;
height: auto;
}

input,
button,
textarea,
select {
font: inherit;
color: inherit;
}

button {
background: none;
border: none;
cursor: pointer;
text-align: inherit;
font-family: inherit;
}

[hidden] {
display: none !important;
}

[disabled] {
cursor: not-allowed;
opacity: 0.5;
}

@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
29 changes: 29 additions & 0 deletions frontends/open/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# =============================================================================
# AngelaMos | 2026
# .env.example
# =============================================================================
# Copy to .env for production, .env.development for dev
# =============================================================================

# =============================================================================
# HOST PORTS
# =============================================================================
NGINX_HOST_PORT=22784
FRONTEND_HOST_PORT=33067

# =============================================================================
# Application
# =============================================================================
APP_NAME=no-auth-template
ENVIRONMENT=production

# =============================================================================
# Frontend (Vite)
# =============================================================================
VITE_API_URL=/api
VITE_APP_TITLE=No Auth Template

# =============================================================================
# Cloudflare Tunnel (for cloudflared.compose.yml)
# =============================================================================
CLOUDFLARE_TUNNEL_TOKEN=YOUR_TUNNEL_TOKEN_HERE
27 changes: 27 additions & 0 deletions frontends/open/cloudflared.compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# =============================================================================
# AngelaMos | 2026
# cloudflared.compose.yml
# =============================================================================
# Cloudflare Tunnel for production remote access
# Usage: docker compose -f compose.yml -f cloudflared.compose.yml up -d
# =============================================================================

services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: ${APP_NAME:-no-auth-template}-tunnel
command: tunnel run --token ${CLOUDFLARE_TUNNEL_TOKEN}
networks:
- app
depends_on:
nginx:
condition: service_started
deploy:
resources:
limits:
cpus: '0.5'
memory: 128M
reservations:
cpus: '0.1'
memory: 32M
restart: unless-stopped
36 changes: 36 additions & 0 deletions frontends/open/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# =============================================================================
# AngelaMos | 2026
# compose.yml
# =============================================================================
# Production compose - Nginx serving built React app
# For Cloudflare tunnel: docker compose -f compose.yml -f cloudflared.compose.yml up
# =============================================================================

name: ${APP_NAME:-no-auth-template}

services:
nginx:
build:
context: .
dockerfile: infra/docker/vite.prod
args:
- VITE_API_URL=${VITE_API_URL:-/api}
- VITE_APP_TITLE=${VITE_APP_TITLE:-My App}
container_name: ${APP_NAME:-no-auth-template}-nginx
ports:
- "${NGINX_HOST_PORT:-22784}:80"
networks:
- app
deploy:
resources:
limits:
cpus: '1.0'
memory: 256M
reservations:
cpus: '0.25'
memory: 64M
restart: unless-stopped

networks:
app:
driver: bridge
49 changes: 49 additions & 0 deletions frontends/open/dev.compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# =============================================================================
# AngelaMos | 2026
# dev.compose.yml
# =============================================================================
# Development compose - Nginx + Vite dev server with HMR
# Uses .env.development
# =============================================================================

name: ${APP_NAME:-no-auth-template}-dev

services:
nginx:
image: nginx:1.27-alpine
container_name: ${APP_NAME:-no-auth-template}-nginx-dev
ports:
- "${NGINX_HOST_PORT:-58495}:80"
volumes:
- ./infra/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./infra/nginx/dev.nginx:/etc/nginx/conf.d/default.conf:ro
depends_on:
frontend:
condition: service_started
networks:
- app
restart: unless-stopped

frontend:
build:
context: ./react-scss
dockerfile: ../infra/docker/vite.dev
container_name: ${APP_NAME:-no-auth-template}-frontend-dev
ports:
- "${FRONTEND_HOST_PORT:-15723}:5173"
volumes:
- ./react-scss:/app
- frontend_modules:/app/node_modules
environment:
- VITE_API_URL=${VITE_API_URL:-/api}
- VITE_APP_TITLE=${VITE_APP_TITLE:-My App}
networks:
- app
restart: unless-stopped

networks:
app:
driver: bridge

volumes:
frontend_modules:
25 changes: 25 additions & 0 deletions frontends/open/infra/docker/vite.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# =============================================================================
# AngelaMos | 2026
# vite.dev
# =============================================================================
# Development Dockerfile for Vite/React frontend
# Features: pnpm, HMR support, polling for Docker file watching
# =============================================================================
# syntax=docker/dockerfile:1

FROM node:22-slim

RUN corepack enable && corepack prepare pnpm@latest --activate

WORKDIR /app

COPY package.json pnpm-lock.yaml* ./

RUN --mount=type=cache,target=/root/.local/share/pnpm/store \
pnpm install --frozen-lockfile

COPY . .

EXPOSE 5173

CMD ["pnpm", "dev", "--host", "0.0.0.0"]
Loading
Loading