Take-home technical exercise for a Senior Software Engineer role.
A decentralized collaboration platform inspired by the Manhattan Project. Scientists authenticate via Decentralized Identifiers (DIDs) and manage sensitive research documents stored in Decentralized Web Nodes (DWNs) using the Web5 protocol.
Company: TBD
I was inspired after watching the movie Oppenheimer which was 3 hours of character development and 5 minutes of the actual bomb being dropped.
I thought, "What if there was an app that could help the scientists collaborate and manage their research in a decentralized manner since identity verification was so important for them?".
And thus, LARA was born.
This is a Next.js project bootstrapped with create-next-app.
First, install the dependencies:
npm iThen, run the development server:
npm run devOpen http://localhost:3000 with your browser to see the result.
The Los Alamos Research App leverages decentralized technologies to provide a secure and collaborative environment for scientists.
By using DIDs, decentralized storage, encrypted communication, and specialized collaboration protocols, LARA ensures that sensitive research data is handled with the utmost confidentiality and integrity.
It's a comprehensive solution that addresses the unique challenges of managing highly sensitive and collaborative research projects.
- Access Point: Scientists access a user interface that provides tools for collaboration, data management, and secure communication.
- Authentication: Users are authenticated through Decentralized Identifiers (DIDs), ensuring a secure and privacy-preserving login process.
- DID Creation: New users create a DID, which serves as a decentralized identity within the system.
- DID Verification: Existing users' DIDs are verified to ensure that only authorized individuals can access the system. (TO NOTE: The auth logic is just mocked up right now)
- Data Storage: All data, including research documents and collaboration details, are stored in decentralized web nodes (DWNs).
I spent about 5 hours on this project.
I spent the first hour brainstorming and deciding on an idea and creating a basic scaffold.
I plan to spend the next 2 hours building the UI and decentralized architecture
Then I spent one more hour cleaning up the code and preparing the README to present.
A caveat I will mention is that I not spend a lot of time implementing the DID authentication logic. I mocked it out with a simple boolean check.
I also didn't spend time writing tests using Cypress or Jest even though I recognize how important test-driven development is. Web5 doesn't seem to support types for TypeScript yet so this is part of the reason I didn't write tests but also because I was short on time. Here are examples of tests I would have used for inspiration.
I am unable to deploy the app to a live URL (https://lara-tbd.vercel.app) because it seems Web5 doesn't support the latest version of Next.js. I was able to get it to run locally though.
Here's the error for reference:
Error: No native build was found for platform=darwin arch=arm64 runtime=node abi=115 uv=1 armv=8 libc=glibc node=20.5.1 webpack=true


