diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/Hosting.iml b/.idea/Hosting.iml new file mode 100644 index 0000000..bf4c9d3 --- /dev/null +++ b/.idea/Hosting.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..58fb084 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..50688a4 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..c8397c9 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/docker-compose.yml b/docs/docker-compose.yml new file mode 100644 index 0000000..bb074c9 --- /dev/null +++ b/docs/docker-compose.yml @@ -0,0 +1,9 @@ + +services: + mkdocs: + image: squidfunk/mkdocs-material + container_name: mkdocs + ports: + - "8000:8000" + volumes: + - .:/docs diff --git a/docs/docs/index.md b/docs/docs/index.md new file mode 100644 index 0000000..b6d51e0 --- /dev/null +++ b/docs/docs/index.md @@ -0,0 +1,8 @@ +# Welcome to My SaaS Docs + +This is the homepage for your documentation. + +## Features +- Clean design +- Fast loading +- Easy to write in Markdown diff --git a/docs/docs/stack.md b/docs/docs/stack.md new file mode 100644 index 0000000..2dc2ea7 --- /dev/null +++ b/docs/docs/stack.md @@ -0,0 +1,107 @@ +# ๐Ÿ”ง Tech Stack Overview + +This document outlines the technologies used in this SaaS project, categorized by their roles in the system architecture. + +--- + +## ๐Ÿง  Planning & Documentation + +- **MkDocs + Material**: For internal documentation +- **Miro / Excalidraw** *(optional)*: For architecture diagrams +- **Notion / Obsidian** *(optional)*: For research and planning notes + +--- + +## ๐Ÿ—๏ธ Backend + +- **Language/Framework**: Laravel (PHP) +- **API Style**: RESTful +- **Auth**: Laravel Sanctum or Laravel Passport +- **Job Queues**: Laravel Queues with Redis +- **Database**: MySQL +- **Storage**: Amazon S3 for file uploads + +--- + +## ๐ŸŽจ Frontend + +- **Framework**: Angular +- **Routing**: Angular Router +- **State Management**: NgRx (optional) +- **Styling**: Tailwind CSS or Angular Material +- **Forms**: Angular Reactive Forms + +--- + +## ๐Ÿ” Authentication & Authorization + +- **User Auth**: Email/password, with support for OAuth (Google, GitHub) +- **Session Handling**: JWT or Laravel session-based +- **RBAC**: Role-based access control system + +--- + +## ๐Ÿ’ณ Billing & Payments + +- **Provider**: Stripe +- **Features**: Subscriptions, Trials, Webhooks + +--- + +## ๐Ÿงช Testing + +- **Unit Tests**: PHPUnit (Laravel), Jasmine/Karma (Angular) +- **E2E Testing**: Playwright +- **Linting/Formatting**: ESLint, Prettier, PHP CS Fixer + +--- + +## ๐Ÿญ DevOps & Infrastructure + +- **Containerization**: Docker (dev) + LXC (production under Proxmox) +- **Proxmox Server**: Dell R630 with LXC containers for isolation +- **CI/CD**: Gitea Actions +- **Monitoring/Logs**: Sentry, Logtail, or ELK stack +- **Email**: Postmark or Mailgun + +--- + +## ๐ŸŒ Hosting / Deployment + +- **Frontend**: Nginx serving Angular build in LXC +- **Backend**: Laravel in LXC container +- **Database**: MySQL (in LXC or Proxmox-hosted VM) +- **DNS / SSL**: Let's Encrypt + +--- + +## ๐Ÿ”’ Security Practices + +- HTTPS enforced +- Rate limiting on APIs +- Input validation & sanitization +- Content Security Policy (CSP) +- Regular dependency auditing + +--- + +## ๐Ÿ“ Repo Structure +``` +/ +โ”œโ”€โ”€ backend/ # Laravel app +โ”œโ”€โ”€ frontend/ # Angular app +โ”œโ”€โ”€ docs/ # MkDocs documentation +โ”‚ โ”œโ”€โ”€โ”€ mkdocs.yml +โ”‚ โ”œโ”€โ”€โ”€ docker-compose.yml +โ”‚ โ””โ”€โ”€โ”€โ”€ docs/ +โ”‚ โ”œโ”€โ”€โ”€ index.md +โ”‚ โ””โ”€โ”€โ”€ stack.md +โ””โ”€โ”€ mkdocs.yml +``` +--- + +## ๐Ÿ“Œ Notes + +- Proxmox LXC containers are ideal for resource efficiency and isolation. +- You can snapshot and backup containers easily via Proxmox UI or CLI. +- Ensure containers have proper firewall and AppArmor profiles. \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml new file mode 100644 index 0000000..8b3bc0d --- /dev/null +++ b/docs/mkdocs.yml @@ -0,0 +1,15 @@ +site_name: My SaaS Docs +repo_url: https://gitea.vidoks.local/sortifal/Hosting +theme: + name: material + palette: + - scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + + # Palette toggle for dark mode + - scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode \ No newline at end of file diff --git a/frontend/angular.json b/frontend/angular.json index 670c14a..59593ed 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -107,5 +107,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 52b5fbd..0e5c0ca 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12632,7 +12632,6 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, - "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", diff --git a/frontend/public/example_dashboard.png b/frontend/public/example_dashboard.png new file mode 100644 index 0000000..4687c2b Binary files /dev/null and b/frontend/public/example_dashboard.png differ diff --git a/frontend/src/app/pages/landing/hero/hero.component.ts b/frontend/src/app/pages/landing/hero/hero.component.ts index ad68825..081ecf1 100644 --- a/frontend/src/app/pages/landing/hero/hero.component.ts +++ b/frontend/src/app/pages/landing/hero/hero.component.ts @@ -1,10 +1,11 @@ import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import {NgOptimizedImage} from "@angular/common"; @Component({ selector: 'app-hero', standalone: true, - imports: [RouterLink], + imports: [RouterLink, NgOptimizedImage], template: `
@@ -26,9 +27,9 @@ import { RouterLink } from '@angular/router';
Dashboard preview + class="absolute inset-0 h-full w-full object-cover" height="1024" width="1024"/>
`,