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.
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:
- Spin up a compose inside a worker
- Import a pre-built Convex backup mock into a temporary server
- Run E2E tests using Playwright
CI/CD #
Current CI/CD setup includes a GitHub workflow
- Run integration tests in a worker
- Create GitHub deployment
- Push changes to the server using SSH and re-build the compose
In plans for future:
- E2E tests
- Smoke test with rollback in case of production failure
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.
- Run
docker compose up -d
. This will spin up the containers. - Run
docker compose exec -ti backend ./generate_admin_key.sh
to getCONVEX_SELF_HOSTED_ADMIN_KEY
. - Log in to Convex dashboard.
- Set up Convex environment:
- Run
bunx convex deploy
. - Set up environment variables (guide in
.env.sample
):
- Run
docker compose restart
. - Set up nginx/openresty using
hypershelf.app.conf
. Openresty is recommended, nginx might need to be built with lua in order to supportproxy_cookie_flags
. - Set up your domains
convex.example.com
,backend.example.com
,convex-dashboard.example.com
,example.com
. In case of Cloudflare you can use wildcard:
- 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 serverSSH_PRIVATE_KEY
: OpenSSH private key with access to deploySSH_USER
: Eitherroot
, or user withNOPASSWD
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
- 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.
Integration tests #
CI/CD #
Better UI #
Sizing, margins, glass-morphic elements
Better UX #
Improved state management, better accessibility.
Bug fixes #
Fixed list elements validation, fixed minor logical bugs.