Coder Social home page Coder Social logo

keith-roberts's Introduction

Keith Roberts Photography

A clean and smooth photography website, built with React, React-Router, JavaScript, and Sass.

Installation and Setup Instructions

Clone down this repository. You will need node and npm installed globally on your machine.

Installation:

npm install

To fire up a development server:

npm start

To Run Test Suite:

npm test

Once the server is running, you can visit:

  • http://localhost:8080 to run your application.
  • http://localhost:8080/webpack-dev-server/test.html to run your test suite in the browser.

Reflection

This was a 3 week long project built during my third module at Turing School of Software and Design. I wanted to focus on a more visual and creative project, and found the opportunity to build this site photography website. Project goals included creating a beautiful and smooth responsive design to captivate the user and keep them on the site. The photographer client wanted a site to showcase his work, and get new clients for either fine art or commercial work. He wanted lots of big images, little text, filtering capability, and plenty of whitespace.

My initial research spike including looking at trends in photography websites, and how to best deal with image handling and loading. I create several wireframes in sketch to share with the client, and decided on a direction.

One of the first challenges I ran into was figuring out how to display the grid. I used a library called React-Masonry-Component but also discovered that didn't give me the exact margins I wanted, so I also used a Sass grid created using simple math. I originally wanted to create a design that 'broke the grid', where there would be extra white space, and some images larger than others, so not fixed to a specific row height or column width. I couldn't find a solution that would be scalable and responsive in the time allotted for the project, but will look into alternative solutions for future iterations. I added several subtle and pleasing transitions, when resizing the screen, hovering over an image, and opening the modal.

I wanted to use react for this project not only to solidify my knowledge of the tool, but because the dynamic rendering would make for a smooth filtering experience. Additionally, I implemented react router and learned how to use links to create pathnames, and set state according to the pathname, and trigger the render of the correct images based on the filter applied by the link and the pathname.

Tools and tech used include: react, react router, webpack, sass, enzyme. Sass enabled me to split out CSS files, uses variables, nesting, and the grid system. Testing this project required an additional workaround when using mount on components that include react router links. In the test, wrapping the component in a enabled the test to run through the router links.

The site will be live and hosted on the client hosting service when more images are loaded and more categories, subcategories, and filters are created. We will also look into using Amazon Web Services or something similar to store the photos in the cloud. I would also like to add an admin side to the site, so the client can easily upload the images, add a category to the images.

keith-roberts's People

Contributors

maiastone avatar stevekinney avatar rrgayhart avatar

Watchers

James Cloos avatar  avatar

keith-roberts's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.