← All projects
▸2024/Thesis/Full-stack development, DevOps

Sportify

Full-stack e-commerce platform for sports gear with Stripe checkout.

PHPYii2PostgreSQLStripeDockerNginx

Sportify is a full-featured e-commerce application for browsing and purchasing sports equipment and apparel. It includes a product catalog, category-based browsing, search and filtering, shopping cart, checkout and order management.

The application also includes an administration interface for managing products, categories, users and orders. The backend was built with PHP and Yii2, with PostgreSQL used for persistent data storage and relational data management.

Stripe Checkout was integrated to handle online payments, with the application processing the result of the payment flow and updating the corresponding order. This allowed the project to use a real payment provider rather than implementing payment handling directly.

The project was developed as my BSc thesis and gave me experience across the entire application stack, from database design and backend business logic to frontend templates, authentication, authorization and deployment.

Docker and Docker Compose were used to containerize the application and its dependencies, making the development environment reproducible and simplifying the setup of the project across different machines.

$ cat challenges.md

Designing the e-commerce data model

The application needed to represent products, categories, users, carts and orders while keeping their relationships consistent. I designed the PostgreSQL schema around the main business entities and their relationships and implemented the corresponding Yii2 models.

Implementing the checkout flow

The checkout process had to connect cart contents, customer information, order creation and external payment processing into a coherent workflow. I separated the different stages so that the application could keep track of an order throughout the payment process.

Integrating an external payment provider

Integrating Stripe introduced an external dependency into the otherwise self-contained application. I had to work with Stripe Checkout, handle the payment response and make sure the application correctly reflected the resulting order state.

Building the administration interface

The project required more than a customer-facing storefront. I also built the functionality needed to manage products, categories, users and orders, which introduced additional authorization and business rules into the application.

Reproducible development environment

I used Docker Compose to define the application environment and its dependencies. This made it possible to start the project consistently without manually installing and configuring every required service.

// next up
DoseLearn

A clinical decision-support platform for pediatric intensive care.

Read →