F+S GmbH — E-Commerce Shop
The F+S GmbH online shop is a complete B2C e-commerce store for a wholesale company in the natural stone industry. Over 9 months as a full-time employee I planned, developed and deployed it entirely on my own — from the architecture and design to the server infrastructure.
This project is in active production use by the client. The repository is not publicly accessible for business reasons.

What is the F+S Shop?
A custom-built online shop for the natural stone wholesaler F+S GmbH — with full ERP integration, a custom authentication system, Stripe checkout and automated product synchronization. Not an off-the-shelf solution, but a system built from scratch to meet specific requirements.
Tech Stack
Angular Django Docker Nginx Celery PostgreSQL Stripe Weclapp GitHub Actions GSAP Linux
Architecture
fs-gmbh/
├── 📁 .github/
│ └── 📁 workflows/
│ └── ⚙️ deployment.yml # CI/CD Pipeline
├── 📁 fs-gmbh-frontend/ # Angular App
├── 📁 fs-gmbh-backend/ # Django + Celery
├── ⚙️ docker-compose.yml # Orchestration
└── 📄 .gitignore
All services run containerized via Docker Compose behind an Nginx reverse proxy. GitHub Actions handles the automated deploy process to the VPS — no manual deployment anymore.
Features in Detail
🔐 Authentication System
A complete, production-ready auth system that handles all edge cases:
- Login Methods — Custom cookie-session system + Google OAuth
- Email Verification — With resend option if the email doesn't arrive
- Password Reset — Secure reset flow via email
- Automatic Cleanup — Celery jobs notify unverified users after 24h and delete the account after 48h to keep the database clean
- Profile Pictures — Upload, compression and optimization in the backend
- Re-Authentication — For sensitive actions (delete profile, change email) the user must re-authenticate after 5 minutes — via Google or the custom system depending on the login method
- Clean Account Deletion — All linked data is removed in cascade
🔄 Weclapp ERP Integration
For one month different ERP systems were evaluated — Lexware, Sync4, Desk4 and finally Weclapp as the winner. The deciding factor was REST API quality: only Weclapp supported product variants, tiered pricing and complex product properties without an intermediate system.
A Celery automation synchronizes every 30 minutes:
Weclapp REST API
↓ (every 30 min via Celery)
Django Backend
↓ (prepared for the shop)
PostgreSQL
↓ (optimally served)
Angular Frontend
The frontend knows nothing about Weclapp — it always receives clean, cached data from the shop's own database for maximum performance.
Additionally, Weclapp was integrated for customer management: after a purchase, the customer is automatically created in Weclapp, the invoice is generated and sent. The delivery status is visible to the customer in real time.

🛍️ Product Filter
Inspired by Amazon, a complex live filter system was built:
- Multiple filters combinable (category, properties, price, etc.)
- Live display of how many products remain for each filter combination
- Instant results without page reload
💳 Stripe Checkout

Price calculations happen exclusively in the backend — the frontend only displays, never calculates. Manipulated prices in the frontend are completely ignored by the backend, as it always validates against the live-synchronized Weclapp prices.
- Server-side cart management
- Stripe integration for secure payment processing
- Price validation against Weclapp live data at checkout
📧 Email & Newsletter
- Transactional emails (order confirmation, shipping status, invoices)
- Course registrations via forms
- Support contact via email
- Newsletter integration with opt-in system
🏗️ Infrastructure
- VPS — Set up and configured independently
- Fail2Ban — Protection against brute-force attacks
- Nginx Reverse Proxy — SSL, routing, performance
- GitHub Actions CI/CD — Fully automated deploy on every push
- Docker Compose — All services orchestrated and reproducible
What I Learned
This project was a different dimension from everything before — not a learning project, but a real product for a real client with real requirements:
- Time Management & Planning — What goes fast, what takes time, how to communicate progress in daily meetings
- Architecture Decisions — The architecture was reworked 10+ times as the project kept growing. I learned to think modular early on
- ERP Evaluation — Professionally evaluating different systems over a month and providing a reasoned recommendation
- Edge Cases in Auth Systems — What can go wrong and what needs to be secured when real users use a login system
- Price Security — Why you should never trust the frontend when money is involved
- Custom Animations — Built slider and confetti animations from scratch instead of relying on libraries (GSAP)
- Accessibility & Legal — WCAG, terms of service, privacy policy as real requirements
Links
- 🔒 GitHub Repository — Private (commercial project)
- 🌐 Live Website