You are browsing as a guest. Sign up (or log in) to start making projects!

qqxzew

@qqxzew

Joined June 2nd, 2026

  • 10Devlogs
  • 3Projects
  • 1Ships
  • 15Votes
67 guys
Open comments for this post

4h 2m 47s logged

Devlog: Building SSSocks — Days 1 to 6: Infrastructure to Atomic ReservationsFirst devlog for SSSocks, a high-performance e-commerce backend for premium sock sales. This log covers architecture choices, infrastructure setup, and technical challenges from the first six phases of development.Days 1–2: Infrastructure and CI/CD AutomationThe project focused on isolating the execution environment to ensure consistency across hosts.Configured a local development stack using Docker Compose (PHP-FPM, Nginx, and MySQL).Established an automated CI/CD pipeline using GitHub Actions.Integrated PHPStan for static analysis at Level 8 to enforce strict typing and prevent runtime type mismatches.Day 3: Database Schema and MigrationsDatabase modifications were abstracted using migrations to manage state deterministically.Integrated Phinx for migration and seeding management.Executed the initial relational schema, creating the products table.Implemented core database fields: unique stock keeping units (sku), names, inventory counts (stock), and prices stored as integers representing cents to avoid floating-point inaccuracies.Day 4: Dependency Injection and RefactoringAs the codebase scaled, manual object instantiation was replaced with a cleaner design pattern.Integrated the Nette DI container to manage object lifecycles and decouple classes.Configured service definitions inside config/common.neon.Refactored components like PasswordManager into standalone services managed by the container.Day 5: Presentation Layer and Repository PatternSeparated data access from presentation logic to maintain clean boundaries.Implemented the Repository pattern with ProductRepository handling data retrieval via Nette Database Core.Created ProductSeeder via Phinx to populate the database with standardized test inventory.Integrated the Latte template engine, eliminating inline HTML concatenation and establishing an MVC separation for the product showcase.Day 6: Highload Optimization and Race Condition PreventionThe standard SELECT stock -> UPDATE stock workflow introduces race conditions under concurrent traffic, causing overselling. To achieve atomic inventory reservation under high load, the architecture was refactored:Introduced a Redis instance running on an Alpine image inside the Docker network.Developed a StockManager service acting as an abstraction layer over the Redis memory cache.Wrote an embedded Lua script executed directly inside the single-threaded Redis engine. The script performs read, condition-check, and decrement operations atomically within a single non-blocking transaction.Lualocal current_stock = tonumber(redis.call(‘GET’, KEYS[1]))
if current_stock and current_stock >= tonumber(ARGV[1]) then
redis.call(‘DECRBY’, KEYS[1], ARGV[1])
return 1
end
return 0
Technical Challenges and Bug FixesPSR-4 Case Sensitivity: Encountered class-loading failures during Linux-based CI execution despite code running successfully on a Windows host. Resolved by aligning file naming conventions with uppercase namespaces (Bootstrap.php and StockManager.php).Docker Network DNS Propagation: Encountered a Name or service not known error connecting the PHP container to the new Redis host. Solved by flushing the virtual network topology via docker-compose down && docker-compose up -d.Strict Parameter Compliance: PHPStan Level 8 rejected passing integer parameters into the Predis eval method arguments. Fixed by explicitly casting inventory quantities to strings: (string) $quantity.Current Backlog[ ] Implement an API endpoint structure to accept incoming product selections.[ ] Integrate a validation layer for incoming HTTP POST request payloads.[ ] Design the architecture for the stateful shopping cart session.

0
0
0
Ship

I made EquipLane, an industrial maintenance ticketing system where clients can report equipment problems, engineers can manage assigned repair tasks, and admins can control the whole maintenance workflow.

The hardest part was coming up with the idea and building the project from scratch without much previous experience. I had to figure out the structure, database, roles, authentication, and the whole workflow step by step.

I’m most proud that I was able to finish a working project and also make the GitHub repository look organized and well documented. This is my first major portfolio project, so I’m proud that it turned into something complete.

To test it, just open the project link and log in using the demo credentials from the README.

  • 9 devlogs
  • 14h
Try project → See source code →
Open comments for this post

1h 24m 21s logged

What I did:
Wrapped up the EquipLane project and prepared it for my portfolio. I containerized the entire application using Docker and Docker Compose, linking a PHP 8.2 server with a MariaDB database so the whole environment can be spun up with a single command. I also set up a CI pipeline using GitHub Actions to automatically lint and check PHP syntax on every push. Finally, I generated a complete Entity-Relationship Diagram (ERD) to visualize the database architecture and wrote a comprehensive README explaining the core mechanics, security features, and the PRG pattern I implemented.

The struggles:
I definitely reached the limit of what makes sense to build with pure procedural PHP. Refactoring and maintaining this architecture showed me exactly why OOP and modern frameworks exist. It was a great learning experience for understanding the fundamentals, but I am definitely ready to move on to Nette for my next hackathon projects.

0
0
17
Open comments for this post

3h 37m 39s logged

What I did:
Massive architectural and security overhaul today. I completely rewrote the form submission logic to follow the Post-Redirect-Get (PRG) pattern, integrating session-based Flash messages and strict CSRF token validation across all endpoints. I also implemented “Sticky Forms” so users never lose their detailed text inputs if a validation error occurs. For the administration side, I built full CRUD interfaces to manage personnel roles, corporate clients, and the equipment registry without needing direct database access. Finally, I wrote SQL-level pagination for the main tickets table to keep the application fast and scalable as data grows.

The struggles:
I finally switched from VS Code to PhpStorm today and I am just in shock at how insanely cool and powerful it is. It instantly highlighted database schema mismatches I missed and forced me to write much cleaner code, though getting used to its strict warnings definitely took some time.

0
0
8
Open comments for this post

2h 20m 10s logged

What I did:
Expanded the engineer’s resource reporting logic. When resolving a ticket, engineers are now required to input the exact hours spent and the cost of replacement parts. Built a financial calculation module on the backend that automatically aggregates these costs, applies the Czech 21% VAT (DPH), and displays a detailed invoice summary to admins and clients.

Also implemented a critical backup request feature: engineers can now submit a “Request Backup” flag along with a specific text reason if they encounter blocking issues on-site. Admins immediately see an approval panel to either accept the request (and assign additional help) or reject it.

The struggles:
I had no idea for frontend

0
0
14
Open comments for this post

1h 47m 59s logged

Built the ticket creation page with role protection. Clients can now select their equipment, set priorities, and safely submit maintenance requests to the database via PDO prepared statements.

The struggles:
Broken the SQL query and html :>

0
0
13
Open comments for this post

2h 13m 55s logged

Milestone: From Static UI to Secure Multi-User App

What I did:
Since the last update on the UI dashboard, I have completely transformed the project from a static frontend into a secure, functional multi-user system using native PHP and MariaDB.

  1. Authentication & Session Management: Built a backend login system from scratch. Implemented secure password hashing using bcrypt. Set up native PHP sessions to track users across pages.
  2. Security Guards & Logout: Created a centralized guard script to prevent unauthorized URI access. If a user isn’t logged in, they are killed and redirected to the login page. Added a full session-destroying logout mechanism.
  3. Role-Based Access Control (RBAC): Differentiated the system for Admins, Engineers, and Clients. The UI now dynamically hides navigation links based on roles, and the backend explicitly throws a 403 Forbidden error if a non-admin tries to access the core control panel.
  4. Profile & Password Updates: Built a personal profile page that fetches current user details and handles password modification with server-side validation.

The struggles:
Ran into multiple syntax walls, including incorrect sql, forgotten POST block brackets, and a lot of typo mismatches. Also had to deal with MariaDB unique constraint violations during database seed testing, which I resolved by writing a structured TRUNCATE routine to clear tables before fresh seeding.

Now the app actually feels like a secure industrial tool rather than just a Tailwind template.

0
0
6
Open comments for this post

22m 33s logged

After getting the database connected, I built the main dashboard U, also I dont have any idea for design after hard day so I asked AI about help…

0
0
11
Open comments for this post

1h 7m 22s logged

Honestly, it is my first time building a real website in PHP, and I realized I had completely forgotten most of my HTML and CSS. Today I successfully parsed the environment variables, securely connected the MariaDB database via PDO, and built a clean industrial dashboard layout using Tailwind CSS. EquipLane is finally coming to life.

0
0
50
Open comments for this post

53m 25s logged

Today I set up the initial structure for Equiplane, an industrial equipment maintenance workflow system

I prepared the first part of the database schema for the project, including the base tables for users and companies. The goal is to build a system where clients can report equipment failures, admins can assign engineers, and engineers can manage repair tickets.

1
0
57

Followers

Loading…