Inspiration

My journey into software engineering has not been a smooth one. My initial encounter with environment variables was challenging. I faced many issues while setting up my development environment, such as missing variables across environments, inconsistent or incorrect casing, expired API keys, and a serious lack of team documentation. At the time, I was unaware of some best practices for managing environment variables and the tools available to help. A year later, I've gained a better understanding and am now able to share my experiences to help both new and experienced developers avoid some of the mistakes I made.

What it does

Dxenv is a real-time management tool for environment variables, designed to strike a balance between a great developer experience (DX) and security. Some key features include:

  • Real-time dashboard updates.
  • Industry-standard encryption techniques (AES-GCM).
  • CLI support for development and CI/CD environments.
  • Automatic TypeScript generation for any environment.
  • Role-based access controls.
  • Version audits.
  • Context-aware AI chat for team communication.
  • Enhanced developer experience.
  • Seamless authentication via Clerk.

How we built it

Dxenv was built using a combination of modern technologies to provide a responsive, interactive, and secure experience:

  • Authentication: Clerk was used to secure and protect user access.
  • Database: Convex DB powers the application, ensuring secure, typesafe, and efficient data storage and retrieval.
  • Real-time Interactions: Convex enables real-time updates, ensuring that changes to the database are instantly broadcasted to all clients.
  • Frontend: Shadcn and Next.js were used for server-side rendering, reducing the load on the browser and improving the user experience.
  • Logging: Sentry was configured to collect logs and error tracing.
  • Styling: Tailwind CSS was used for the design and layout.

Challenges we ran into

  1. With no prior knowledge of encryption techniques, I had to research the best methods for securing sensitive data while ensuring confidentiality, integrity, and performance.
  2. Balancing real-time updates with security considerations was more difficult than anticipated.
  3. RAG: I lacked prior experience with Retrieval-Augmented Generation (RAG) technologies like Langchain and OpenAI, which posed a learning curve. Given the limited time, I had to limit the features to what I could handle.

Accomplishments that we're proud of

  1. Successfully integrating real-time file encryption and decryption techniques in a secure manner.
  2. Building a scalable database and authentication system using Convex and Clerk Auth.
  3. Developing a responsive and visually appealing user interface.
  4. Utilizing TypeScript throughout development to ensure type safety.
  5. Implementing basic role-based access control logic.
  6. Writing a few test cases for our convex functions.

What we learned

Throughout this project, I gained extensive knowledge of trending technologies and became familiar with many of Convex’s features and best practices, including Convex tests. I also improved my understanding of AES-GCM encryption techniques.

What's next for Dxenv

  • Real-time chat.
  • Public beta launch.
  • Improved webapp design.
  • Comprehensive test cases.
  • Improved documentation.
  • Improved security and better developer experience.
  • Integration with build tools eg Convex, Vercel, Render (cicd coming soon).

Built With

  • clerk
  • commanderjs
  • convex.dev
  • nextjs
  • tailwind
  • vercel
Share this project:

Updates