EMI: I am EMI (Deep Mind)🚀 InspirationEMI was born from the vision of creating an assistant that doesn't just answer questions, but acts as an extension that connects with the entire family of Google tools used daily. The project seeks to democratize access to advanced AI for everyone in a simple way. The name is a play on words: "I am EMI", emphasizing the digital identity of an assistant in "I Am" mode.🛠️ How I Built ItThe project development was carried out with the assistance of Gemini, providing it access to the project, documentation, and event rules. Through consultations and brainstorming ideas, I reached the project's objective of what could be achieved; subsequently, we discussed the technologies to be used, always resolving everything with Google's toolset.It is important to highlight that the application development was 100% Vibe Coding.Tools Used:Gemini (gemini.google.com): Project development, design, logic, prompts, tool implementation, and problem-solving.Gemini 2.0: AI Agent.Gemini Live: AI Agent in live mode.Antigravity: Application development and repository management. Gemini 3 Pro (High) for development and Gemini Flash for the repository.Firebase: Database.Firebase Auth: Login.Google Cloud Run: Compilation and production deployment.Google Tools: Calendar, Tasks, Gmail, and News.Tools to be implemented: Search, Drive, Keep, YouTube, Meet, and Chat.The project is a Next.js application deployed on a serverless architecture over Google Cloud Platform.Frontend & API: Developed with Next.js using Turbopack to optimize performance.Brain: Integration with Gemini 2.0 Flash for natural language processing and Function Calling.Database & Auth: Use of Firebase (Firestore and Auth) for user management and the assistant's persistent memory.Infrastructure: Automated deployment on Cloud Run with secret management via Secret Manager, ensuring credentials are never exposed in the code.Tools: Implementation of custom tools for real-time search, email management, and calendar events.📚 What I LearnedVibe Coding, combined with Google's Cloud tools, allows for the development of any type of application; I don't see any limitations for creating complex systems. It is necessary to understand technically how an application works and how to query the agent. While Vibe Coding allows you to develop anything, it is crucial to take it step by step. You shouldn't ask for complex solutions all at once; instead, resolve complexity in small steps.The structure is not the same as developing an app manually. Here, you must lay the foundations first while keeping the final goal in mind. You cannot request features without the base functioning properly; otherwise, the agent will mutate the code in every request and break previously completed developments.🧱 Challenges I FacedThe biggest challenge was the production environment configuration. During deployment, we faced critical validation errors from the Firebase Admin SDK at compile time. The compiler attempted to validate non-existent private keys, which halted the process several times.In every step, logs were provided to Gemini to resolve the issues, implementing the provided instructions step by step. When I noticed Gemini circling the same problem, I passed the logs directly to Antigravity, which had more context of the app to find a resolution.We solved this by implementing a lazy initialization strategy and forcing route dynamism:$$\text{Build Status} = \begin{cases} \text{Success} & \text{if } \text{private_key is structurally valid} \ \text{Fail} & \text{otherwise} \end{cases}$$We injected a structurally perfect dummy JSON into the Dockerfile to satisfy the compiler, allowing Secret Manager to inject the real key during runtime.
Built With
- antigravity
- firebase
- gemini
- google-cloud-run
- iam
- next.js
- node.js
- typescript
Log in or sign up for Devpost to join the conversation.