Initial Design
I began the design process by coming up with a general list of what the page was for:
- Display the Various Plants in My Home
- Inform the user of various information regarding each plant
I then began crafting mockups using a program called Pencil. The initial mockups were just structure/organization based. To create a general structure that displayed all the information I wanted to share. I created one version for a landscape/desktop version of how the page should look and one version for a portrait/mobile version. I then added color and a placeholder image to the mockup, and began creating a background for each size-version of the site. The background images were created using images found online (all sources can be found in the footer of this page) and edited using GIMP - the GNU Image Manipulation Program.
Technical Process
After I had a design to work from, it became time to start the process of creating the actual website. I knew that I wanted to create a site that I could easily add new content to. I wanted to continue to gain experience with the skills and languages I had used thus far, while still learning new and better things and making improvements to my usage of them. This led me to three possible ways of creating this project, with pros and cons for each:
Option |
Pros |
Cons |
Hardcoded in html/css/js |
- All skills I am fairly competent in
- Can easily be displayed, shared, and viewed on github pages for free
|
- Updating content and properly organizing main file will be more work
- Main file will quickly become very large and cumbersome as content is added
- Less power and control over functionality
|
Base Files in html/css/js, server used to allow requests for a JSON file |
- Gets around CORS to load 'local' files from server
- Allows for content to be loaded from file
- Some slick javascript would allow for a dynamic page to be built easily, without much added to original 'easy' version of page
- Adding more content to page would be as simple as adding another entry to the JSON file
- Still uses simple stack with little extra knowledge required
|
- No longer a static page, not able to be served on github pages
- Requires a server
- Server only neccessary for one task - overkill?
- Adding new content is easier, but still a little more complicated than it could be
|
Building a full CRUD App - html/css/js + mySQL, PHP |
- Most 'real world' version of the site
- Once built, easiest/best option for adding, removing, updating content
- Excellent showcase of skills
- Dynamic content/page creation
|
- Highest work/time/effort to create initial product
- Higher complexity - requires much more error checking, form handling, input validation etc.
- Requires extra design/planning - creating database schema, handling user authentication for database writing access etc.
|
Ultimately I decided to create my MVP using the first option of a simple html/css/javascript page, while writing it in such a way that I would eventually be able to easily update it to it's final version of a CRUD app. This would allow me to quickly prototype and create the design/setup of the page, making any neccessary changes or updates before the final version is created and intertwined with the database. It was my hope that this would help to seperate the design process and the implementation process, ultimately improving and expiditing both sides of development.
With this course chosen, my steps for creating the project were:
- Use the mockup design to implement the initial structure and style of the page
- Add in content/placeholder content as needed. In this case the page only supported two hardcoded plants to switch between
- Create a 'mobile first' page by initially styling everything as needed for the mobile version
- Thouroughly test the mobile version layout
- Add media queries to style page appropriately for the desktop version
- Thoroughly test the desktop version layout
- Analyze results and come up with any more steps to realize before embarking on 'full' (CRUD) version of page