{"id":23714583,"url":"https://github.com/anazalu/order-flow","last_synced_at":"2026-04-10T23:03:01.540Z","repository":{"id":180179262,"uuid":"646074923","full_name":"anazalu/order-flow","owner":"anazalu","description":"A web shop themed project with focus on test automation. The Docker-containerised backend uses Linux, PostgreSQL, Django and exposes a REST API consumed by React frontend. A CI pipeline (GitHub Actions) runs the Cypress and Selenium tests.","archived":false,"fork":false,"pushed_at":"2024-05-11T07:03:03.000Z","size":4168,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T20:30:59.835Z","etag":null,"topics":["cypress","django","react","selenium"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anazalu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-27T07:46:27.000Z","updated_at":"2024-07-27T13:52:50.000Z","dependencies_parsed_at":"2023-11-26T12:25:29.336Z","dependency_job_id":"1a71e13f-eca8-4022-bf02-d83afc6508eb","html_url":"https://github.com/anazalu/order-flow","commit_stats":null,"previous_names":["anazalu/order-flow"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anazalu%2Forder-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anazalu%2Forder-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anazalu%2Forder-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anazalu%2Forder-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anazalu","download_url":"https://codeload.github.com/anazalu/order-flow/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239800816,"owners_count":19699229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cypress","django","react","selenium"],"created_at":"2024-12-30T20:30:47.144Z","updated_at":"2026-02-09T11:30:18.516Z","avatar_url":"https://github.com/anazalu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OrderFlow\n\n## Overview\n\nA web shop themed project with focus on test automation. The Docker-containerised backend uses Linux, PostgreSQL, Django and exposes a REST API consumed by React frontend.\n\nTesting modes:\n\n- API, manual (Postman)\n- API, automated (Cypress/TypeScript)\n- Web UI, manual\n- Web UI, automated (Selenium/Python)\n\nA CI pipeline (GitHub Actions) runs the Cypress and Selenium tests.\n\n![Main Page](./screenshots/of_main_screen.png)\n\n## Authentication\n\nThe user is required to register using the registration form (username, password, email are passed to the /api/register/ endpoint). All other endpoints expect a JWT token to be sent in request header. The token itself is requested from the /api/token/ endpoint, passing username and password.\n\n## Backend: Postgres, Django\n\nThe project's backend is running as two Docker containers, a Postgres DBMS and a Django web server. The containers are launched by Docker Compose.\n\nDjango REST Framework is used to implement a REST API with these endpoints/methods:\n\n```\n- /api/register/         POST\n- /api/token/            POST\n- /api/token/refresh/    POST\n- /api/products/         GET\n- /api/products/1/       GET\n- /api/orders/           GET\n- /api/cart/items/       GET POST\n- /api/cart/items/1/     GET PUT DELETE\n```\n\n## Frontend: React\n\nThe frontend is a React/TypeScript single-page application that uses Material UI, React Query and axios.\n\nThe web shop website is implemented as the following components:\n\n- RegistrationForm.tsx\n- LoginForm.tsx\n- Layout.tsx\n- Header.tsx\n- ProductsContainer.tsx\n- ProductCard.tsx\n- CartItemsContainer.tsx\n- CartItem.tsx\n\n## API Test Automation: Cypress\n\nThe Cypress framework is used to implement automated tests for the REST API:\n\n- GET should fetch at least 1 product from the /api/products/ endpoint\n- GET should fetch product details from the /api/products/1/ endpoint\n- GET should fetch 1 order from the /api/orders/ endpoint\n- POST should add item to cart and GET should fetch last cart item from the /api/cart/items/ endpoint\n- PUT should modify quantity of a cart item using the /api/cart/items/1/ endpoint\n- DELETE should remove a cart item using the /api/cart/items/1/ endpoint\n\n## Web UI Test Automation: Selenium\n\nThe Selenium and pytest frameworks are used to implement end-to-end test automation.\n\n## CI Pipeline\n\nA GitHub Actions workflow is configured to be triggered by a push to any branch.\n\nThe workflow has the following steps:\n\n- Set up Python\n- Install backend (Python) dependencies\n- Setup Node.js\n- Install frontend dependencies\n- Start backend\n- Run API Tests (Cypress)\n- Start frontend\n- Run UI Tests (pytest/Selenium)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanazalu%2Forder-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanazalu%2Forder-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanazalu%2Forder-flow/lists"}