[NEW] Core features
Maxelweb opened this issue · comments
Mariano Sciacco commented
Mandatory
Data
- OAuth Github integration --> use the Github API to retrieve repo data
- OAuth Gitlab integration --> use the Gitlab API to retrieve repo data
- SQL-Lite or external Postgres integration --> used to store user data
- Database organization should track: oauth user authorization, user preferences, group repos created by user.
Dashboards and features
- Group of multiple repositories that identify a single product or groups of products
- Small scale // Dashboard per user, where you may see the current branches that user is working on
- Medium scale // Dashboard per repositories, where you may see the current people working in branches and their latest pushes
- Large scale // Dashboard per group, where you may see multiple repositories dashboard
Permissions
- The dashboards must be accessible within the correct credentials based on the OAuth integration --> if a user has access to a repo, then he can view it the dashboard (when it's revoked, if the repo is private, it will be no longer visible, obviously)
- Group repos are within the same Git service (Github or Gitlab) --> Good idea to mix them? Maybe not...
- A user can be signed up only with both Github and Gitlab (?) --> For Gitlab, we should ensure support for self-hosted websites. Also, while a user signed in with Github it should also be able to connect the Gitlab account and viceversa.
- Public repos should allow public group repos to be available to everyone.
- Private repos should not publicly available
- Mixed public and private repos should not publicly available.
Desired
- Multiple self-hosted websites in one Gitlab account (?)
- Group repos can be shared (or copied) to people having the same repos
- Single user pushes in different repositories in chronological order (limit ~5, loader with other pushes)
- Possibility to do a snapshot of the current tracking based on the latest push of the default branch for each repository, thus versioning the product as a single entity
Optional / under consideration
- NeDB or external MongoDB integration --> used for Data --> probably not needed
- Webhook Github API integration
- Webhook Gitlab API integration
- Branch tracking based on pushes
Mariano Sciacco commented
Language and framework choice
- Plain PHP 8 with Composer --> PHP backend, should help for higher security with OAuth communication within server and application
- Laravel framework (PHP 8) --> For a better frontend-backend part
- Electron --> Useful if i want to implement a desktop based application
- PHP Lumen for API + Angular / React --> Good diversification, more work to do, more extension, less good security approach with JWT perhaps
- NodeJS in TypeScript + React --> Completely new, much work, same security concerns as above.
- NodeJS + Svelte --> New but curious
Deployment
- [Mandatory] Docker, with automatic deployment in development server --> dev.teamflow.bitcrumble.com
- [Desired] Kubernetes