Week4

repo-banner

Tier: Personal
Customer: Undisclosed
Repo: https://github.com/IU-Capstone-Project-2025/hypershelf

Testing and QA #

This week’s patch includes integration tests for Convex backend with 100% test coverage. The testing pipeline tests isolated components, as well as their interaction between each other.

Screenshot 2025-07-01 at 3 40 45 PM Screenshot 2025-07-01 at 3 42 10 PM

Frontend E2E tests would require spinning up a separate Convex server with a full configuration, which is pretty tough. As of now, there is only a plan for E2E tests:

  1. Spin up a compose inside a worker
  2. Import a pre-built Convex backup mock into a temporary server
  3. Run E2E tests using Playwright

CI/CD #

Current CI/CD setup includes a GitHub workflow

  1. Run integration tests in a worker
  2. Create GitHub deployment
  3. Push changes to the server using SSH and re-build the compose

In plans for future:

  1. E2E tests
  2. Smoke test with rollback in case of production failure
Screenshot 2025-07-01 at 3 48 09 PM

Deployment #

Initial setup is manual, no CI/CD. If the target server does not have an already deployed version of Hypershelf, the pipeline will fail.

  1. Run docker compose up -d. This will spin up the containers.
  2. Run docker compose exec -ti backend ./generate_admin_key.sh to get CONVEX_SELF_HOSTED_ADMIN_KEY.
  3. Log in to Convex dashboard.
  4. Set up Convex environment:
Screenshot 2025-07-01 at 3 55 10 PM
  1. Run bunx convex deploy.
  2. Set up environment variables (guide in .env.sample):
image
  1. Run docker compose restart.
  2. Set up nginx/openresty using hypershelf.app.conf. Openresty is recommended, nginx might need to be built with lua in order to support proxy_cookie_flags.
  3. Set up your domains convex.example.com, backend.example.com, convex-dashboard.example.com, example.com. In case of Cloudflare you can use wildcard:
image
  1. Enjoy

Any consequent changes to this instance will be deployed through CI/CD automatically if you set up the secrets inside GitHub repo:

  • DEPLOYMENT_URL: public URL of deployed frontend, e.g. https://hypershelf.app. Will be used as deployment url.
  • SSH_HOST: IP of the target server
  • SSH_PRIVATE_KEY: OpenSSH private key with access to deploy
  • SSH_USER: Either root, or user with NOPASSWD permissions for Docker + /opt/hypershelf

Vibe Check #

All of my teammates feel heard, trust me on this one. Progress is steady and on-schedule. We’ve had a demo for the customer and got some valuable feedback + requested features

image
  • ACL to limit access to assets
  • Full REST API with access tokens
  • Discuss existing solution for office schema generation with [REDACTED]
  • Store cold history of all changes made with link to dates, users and ability to rollback
  • Add ability to group by fields

Weekly progress #

Static views #

Allows to hide and reorder columns, as well as set the sorting rules. The views are stored on the backend, the currently preferred view is stored client-side.

Screenshot 2025-07-01 at 4 15 00 PM Screenshot 2025-07-01 at 4 16 10 PM Screenshot 2025-07-01 at 4 17 24 PM

Integration tests #

Screenshot 2025-07-01 at 4 18 19 PM

CI/CD #

Screenshot 2025-07-01 at 4 19 24 PM

Better UI #

Sizing, margins, glass-morphic elements

Screenshot 2025-07-01 at 4 21 16 PM

Better UX #

Improved state management, better accessibility.

Bug fixes #

Fixed list elements validation, fixed minor logical bugs.