An innovation platform needs to distinguish who can contribute, assess, approve, and manage an idea. The difficult part is keeping permissions, lifecycle transitions, and the conversion into a project consistent across a mobile client and multiple data stores.
My contribution
My work on this academic challenge covers the Java/Spring Boot backend, business rules, data relationships, Flyway migrations, and REST integration with the Kotlin/Jetpack Compose Android application.
How the system connects
Simplified architecture derived from the repository’s documented system boundaries.Open full-size diagram ↗
Engineering decisions
01
Keep authorization and workflow rules on the server
OPERACIONAL, GESTOR, and LIDER have independent permissions. Android adapts the interface, but the API validates authorization and permitted state transitions. Hiding a mobile control is not the security boundary.
02
Convert an approved idea atomically
Project creation and the idea’s conversion are performed in one MySQL transaction, with at most one project per idea. This keeps a partial conversion from becoming a valid domain state.
03
Assign clear responsibilities to each data store
MySQL is the transactional source of truth. MongoDB stores audit events and AI history. Gemini provides advisory, structured evaluations; it does not approve or reject ideas or change their status.
What was delivered
A native Android client is integrated with the Spring Boot API.
The repository documents backend and Android tests, including mocked AI integration.
Docker Compose, a Postman collection, and setup instructions provide a reproducible review path.
Academic FIAP Challenge in the Grupo Águia Branca context. Architecture and test evidence are available in the linked repository.