- 1st phase: the refactoring we have to do in SDLC codebase - [ ] Moving Gitlab and In-Memory out to its own module - [ ] Create a bundle: - [ ] Web-filter - [ ] Dropwizard (module mapping, dependency injection) - [ ] Configuration: - [ ] Backend configuration - [ ]Think about the shaded JAR module + Docker setup - 2nd phase: the refactoring that we need to do in tandem with Studio - [ ] Create set of enum of features, backend returns a set of enum values to tell what it can and cannot support - [ ] We have 3 levels of feature supports (the top is the most important and will override all the one below it): - [ ] Server: what feature the server itself allows - [ ] Backend: what the backend can support - [ ] Project (its own thing): we allow each project to configure what it can support,or this can be derived from user's permission - [ ] Studio askes the server: combine the configuration + backend (do the overlay), we have 2 APIs: - [ ] Server level - [ ] Project level