First thing in the morning, Instructor Fiaz graded my belt exam with me. I got a perfect 10/10! Booyah. I officially have my black belt in the Python stack. Now the fun can finally begin! Seeing as I was the only Python black belt holder from my cohort so far, Fiaz had me work with some of the recent Coding Dojo graduates currently in their residency to get started early on my project week project.
I came up with the idea to do an Evernote clone originally, because notes apps are kinda my jam, but I decided that doing the whole text editor + collaboration thing would be too involved for a one-week (+ a couple days) project. Google Docs came to mind too, but again, the text editor thing seemed too ambitious. But thinking about Google Docs reminded me about Google Drive, and just like that I had my project. Google Drive is essentially just a cloud storage platform with some organizational and social features, so I figured it was plenty do-able in the one week-ish timeline. Obviously my clone won’t actually have the massive storage available on the real Google Drive, but I’m gonna try and get all the visuals and core functionality down.
Once I had my project target, the three Dojo alums walked me through the user stories and MVP process. User stories were pretty straightforward as fortunately I have plenty of first hand experience using Google Drive. Deciding on the MVP is essentially an exercise in prioritization. The MVP, or Minimum Viable Product, is just a list of the core features that must be included in the final product in order for it to be considered complete (the bare minimum). So, we divvied up the user stories into essential and non-essential categories and I was ready to get to work.
The very first thing I did was write up a draft of my database model classes. I figured I’d need at least three main classes, User, File, and Folder. The User model will be similar to other User model implementations I’ve done in the past. The File model will store all the files uploaded by users along with pertinent information like file type, owner, authorized users, etc.. The Folder model will obviously contain the folder name and a list of child files, but also a list of child folders. The child folder relationship might be a little tricky and I haven’t looked too deeply into it, but I think I can just use a foreign key to ‘self’ so that it will be a one to many relationship for parent folders and child folders. The Folder model will also have some columns similar to those in the File model like owner and authorized users.
After setting up my basic models I got my urls.py and views.py set up with a couple basic routes and got crackin’ on replicating Google Drive in HTML and CSS. By the end of the day I had the “Welcome to Google Drive” landing page and most of the sign in page. I named my clone “Doodle Drive” and changed all the branding on the page accordingly. I took the same logo as Google Drive and recolored it with Photoshop, and then used the same color scheme to recolor my “Doodle” logo and all the other site elements to match it. The final product is looking pretty slick, lol. It’s basically the Google color scheme tinged with purple. I’ll add an image of the landing page to this post when I get a chance.