👉 Live: https://ex.dev.nymark.nu
Retriever Tracker is a modern web-based application for creating and managing profiles for Retriever dogs.
Used to log training sessions, upload portrait images, and follow the dog's progress over time.
The app is optimized for mobile use.
✅ Create dog profiles with name, breed, age, and gender
✅ Upload portrait images (automatically compressed and resized)
✅ View the latest training session
✅ Add and manage training sessions
✅ Responsive design – works on mobile, tablet, and desktop
✅ JWT login and user management
✅ Server-rendered image handling via MongoDB and Multer
| Part | Tech |
|---|---|
| Frontend | Angular |
| UI Components | Angular Material |
| Backend | Node.js + Express |
| Database | MongoDB + Mongoose |
| Authentication | JWT + Bcrypt |
| Image Upload | Multer + Sharp (300x300 optimization) |
| Deployment | Docker Compose |
| Frontend Server | NGINX (static hosting) |
| Reverse Proxy & SSL | NGINX Reverse Proxy + Let's Encrypt |
| Infrastructure | Isolated DMZ network, geoblocking, Watchtower |
The application is deployed with focus on security, performance, and scalability. It's running in a server environment isolated within a DMZ network.
The app is managed via docker-compose and consists of five containers:
- MongoDB
- Node.js/Express (custom-built backend container)
- NGINX (serves the frontend statically)
- NGINX Reverse Proxy (handles routing & SSL termination)
- Watchtower (automatically updates running containers)
- SSL termination is handled by the NGINX Reverse Proxy, which is the only container exposed to the internet
- This setup allows multiple web apps to run behind a single public IP
- Internal routing is handled via Docker networks
- Certificates are generated and managed automatically via Let’s Encrypt
- The application runs inside an isolated DMZ
- Only port 443 (HTTPS) is open to the outside world
- Geoblocking is enabled – only Swedish IP addresses are allowed
- CI/CD is prepared – tools like GitHub Actions and Docker Hub builds were explored
- Deployment is currently manual due to time constraints, but groundwork for automation is already in place
git clone https://github.com/sandranymark/Retriver-Tracking.git
This application is not intended to be run locally – no database URI or JWT secret is included in the project.
Instead, you’re welcome to read through the code and test the app live at:
- Go to 👉 https://ex.dev.nymark.nu
- Register an account
- Log in with your user
- Add a dog
- Upload an image from your mobile or computer
- Add a training session
- Try editing, deleting, switching between dogs, etc.
✅ The application is self-contained – no API keys, passwords, or external services are needed to test it.







