A voyage into the unknown

Fred Hawk
Chingu
Published in
4 min readSep 10, 2017

Chingu Voyage and new project

A new project with new team mates! The project seemed great, had most of the things in it that you would do on a proper site. Authentication, creation of posts and listings of those posts. Now the posts could be anything really. We planned the project, what components we needed, a tech stack to use, namely the MERN (MongoDB, Express, React, Node) stack. Given the experience we had we went with some unfamiliar things so as to challenge ourselves.
This project was to be my first one as a project manager, I’ve looked forward to trying out that side of it for a while now.
I’m still learning but it has been a very enjoyable experience thanks to my team.

Stumbling and progress

Partway through the project we decided to change our project to be a meet up site. So content and the way we approached some aspects needed to change. For instance it no longer needs two types of users.

Working through the project we had to learn a lot of new things. How does the front-end and the back-end communicate? How do we access a database?
One that I didn’t anticipate but I realized later. The importance of setting up a project correctly from the start. It makes it easier as the project grows.
- Use a separate database for development and production.
- Have a production settings file and a file for development settings so when you push to the production server it can use correct settings from the get go. No manual tinkering on the server.
- Scaffold out the project visually. What are the components, how should they interact. It gives a visual representation of the project. That is helpful in my opinion.

I will keep these lessons in mind for the future. Had I known them from the start it would have saved us quite a bit of time.

Routing with express wasn’t as difficult as I thought it would be once I understood how to do middleware and use them together with routes in Express. Turns out, this is how API’s are made. Who knew?

Making queries to the database and communicate with it was very hard at first and the docs are confusing. I did find a course on MongoDB with Stephen Grider on Udemy which helped a lot. Both with navigating the docs and the basics of how to build up queries.

On the front-end I picked up the basics on React Router v.4. Some things weren’t obvious like passing props through a route to the component in React Router. One would think that would be a normal thing to do but apparently not. The authors of React Router v.4 suggested a way but it feels like a hack to me. For anyone who wonder you would use the render prop instead of component prop on the Route. If anyone knows of a better way it would be much appreciated!

As is with many things. Google is your friend and with a lot of googling and persistance. Many of the questions we had going in to this got their answers.

Post mortem and going forward

It has been an incredibly fun project. Lots of lessons learned and great experiences with my team.

For me back-end was the part that was new and unfamiliar together with working with a database.

Authentication and how that works no longer scares me. PassportJS is a wonderful thing and takes care of most of the really scary stuff about authentication. Going attempt to add other authentication methods like Google and GitHub to the project just to see the difference in implementation.

We have many ideas of how we want to progress with the project. Such as adding slack integration and geolocation.

We have stumbled, failed and ultimately learned a lot because of it. We will continue and improve the project and grow with it. The struggle is in my opinion what makes the accomplishment so sweet.

I want to give a big thank you to my partner in crime for this project @linus_br. Anyone will be happy working with him in the future!

I also want to thank Chance Taken and the Chingu community. Most grateful to be part of such a great community!

--

--