DEV Community

isarisariver
isarisariver

Posted on • Edited on

I just published my new side project

Hi guys, I just published my new side project and I'd love to have some feedback ๐Ÿ˜Š. I built it in 5 days, focussing only on the essentials.

I had a breeze making this and getting it ready for a demo in the shortest possible amount of time. This is the link: https://www.cow-pilot.io/. I would really love to hear what you think about it.

a cat typing on a computer

It is built with React, hosted on Heroku. It's already a win for me, because in the process I learned about styled components, a library that makes styling much, much easier than plain CSS.

I also learned about react-beautiful-dnd, which is an awesome library for drag and drop by the guys who made Trello. They have an eggcellent course on egghead.io to help learn it. I don't like video courses much usually, but this one is really well made and helped build the foundation of my app.

Latest comments (42)

 
isarisariver profile image
isarisariver

Hi Chloรฉ, looks like I should rethink what I did there. :)
Thanks for having another look.

Collapse
 
detzam profile image
webstuff

What is it meant to do?

Collapse
 
straydogstrut profile image
straydogstrut

Hi,

Nice work! Looks like you included a lot of functionality in a small space of time.

Iโ€™ve had a look at the demo in Safari on iOS and just wanted to suggest a few things:

  • The hamburger menu on the tasks page and the arrow to submit a task on the task creation page cannot be focused using a screen reader. I havenโ€™t tried on desktop but it may be that these are not keyboard operable either. Idealy use a native <button> element. Otherwise, if these are custom buttons created from <div> or <span> elements or similar, you need to ensure they can receive DOM focus using tabindex=โ€œ0โ€. See the Mozilla tabindex article. Note that you will also have to build in the appropriate roles, states and device independent event listeners too. See Developing a Keyboard Interface in the WAI-ARIA Authoring Practices 1.2

  • The filter items in the navigation menu itself are not exposed as links. The iOS screen reader, VoiceOver, only announces them as plain text (I was able to open the menu, then turn the VoiceOver screen reader on to access these). Again, these are likely created using generic <div> elements so ideally use a native anchor element (<a href=โ€œ#โ€>) or add the ARIA role=โ€œlinkโ€. If taking the latter approach you still need to build in the appropriate behaviours as previously mentioned.

  • Also, when viewing the demo, content behind the demo page is not hidden from assistive technologies. So I can still place screen reader focus (VoiceOver) on the landing page elements while viewing my tasks or creating a task. I saw others mention a modal so perhaps this fills the entire screen on iOS and elements behind are not hidden. One method is to use aria-hidden=โ€œtrueโ€ on a container that is a sibling of the modal container. You would also have to restrict keyboard focus. See the description of a modal in the WAI-ARIA Authoring Practices 1.2

  • Particularly on the create a task page, there appears to be poor contrast with the placeholder text and the button text. As a minimum you should aim for 4.5:1 for regular size text and 3:1 for larger size text (18pt or 24px / 14pt bold or 19px bold). See Contrast (Minimum) in the Web Content Accessibility Guidelines 2.1

  • Visually the buttons to complete tasks look like checkboxes so it is a little disorientating that the task immediately disappears when these are tapped. It would be clearer if visually these were more obviously buttons. However, the ability to select multiple tasks and then press another button to complete them would be a useful feature.

  • I would also say that it seems a bit counterintuitive that the back arrow is used to submit the task rather than cancel. I would either swap these buttons around so the arrow signifies forward progression, or ideally explicitly label it as โ€˜submitโ€™ or similar.

Collapse
 
isarisariver profile image
isarisariver

Hi,
thanks you so much for taking the time to review my project and write all of this down. Let me check all the details and I will reply later.
Regarding the back button, usually the modal is closed when clicking outside of it. There is no save button, all changes are immediate. On small screens like a mobile phone, it is not possible to click outside, so I added the arrow button. Should I change it to close instead of the arrow to make it more intuitive?

Collapse
 
straydogstrut profile image
straydogstrut • Edited

So the arrow Iโ€™m referring to is the one used to submit the task. Personally i found it a little counter intuitive as being on the left and pointing to the left made me think it was a back button to dismiss the modal. The poor contrast on the grey cancel button also made it less obvious (ironically Dev.to has the same issue with their Preview button๐Ÿ™ƒ)

I donโ€™t think using an arrow is inherently wrong (So long as it had a text alternative such as using hidden text or an aria-label) although having a visible text label would remove any ambiguity, but I do think it would make more sense if the arrow was on the right and pointed to the right. The cancel button would then be on the left.

Collapse
 
j3ffjessie profile image
J3ffJessie

This is awesome. I am in the process of building something similar but more tracker focused and habit forming. I really like the functionality of what you built here. Looks good. Keep up the great work.

Collapse
 
isarisariver profile image
isarisariver

Thanks a lot for the feedback, I really appreciate it.
Good habits are so important, learning about them has improved my life a lot. I'm curious to see what you will build.

 
isarisariver profile image
isarisariver

Cool, thanks so much :) Will have a look tonight and change it.

Thread Thread
 
isarisariver profile image
isarisariver

Hi Chloรฉ, the 2 scrollbars should be gone now. Thanks again for your help and for pointing it out.

 
isarisariver profile image
isarisariver

Mmh, strange. I only have one :)
I have an old Windows laptop that I can use for testing. Will check tonight and fix it. It should not look like this.

Collapse
 
braydentw profile image
Brayden W โšก๏ธ • Edited

Pretty sweet! The icons look pretty nice and the draggable feature is super smooth :D

I'm learning React and the MERN stack right now. What technologies did you use to make this? How will you set up user authentication? Are you using Firebase?

Thanks :-)

Collapse
 
isarisariver profile image
isarisariver

Thanks! I found the icons on svgrep.com.

The demo and landing page are built with React and hosted on Heroku. That's the only way I know at the moment to deploy a React app, I haven't tried Firebase so far :).
If you are learning React I highly recommend fullstackopen.com. They also explain how to deploy a React app to Heroku. If you have any questions about it, let me know!

Apart from the two libraries mentioned in the post I only used React Router, so that the url changes when you switch between Home and Try the Demo.

I am planning to use Auth0 for authentication. It's free up to 7.000 users and easy to set up. They have a sample app for React that you can download and play with. Again, if you have any questions, just let me know.

Collapse
 
braydentw profile image
Brayden W โšก๏ธ

Thanks for the advice and resources. Iโ€™m actually using Firebase to deploy the Frontend and heroic for the API/backend. It works pretty well.

Best of wishes!

Collapse
 
navthenugget profile image
Nav Pahwa

Hey, I tried your side project and to be honest the design is super clean and looks good and kind of matches the theme I guess you were trying to achieve. Here are some things you can add and improve:

  1. Storing the Todos in Some Type of Database(Postgres).
  2. Using Google/GitHub/Twitter/Facebook/Discord OAuth to avoid storing passwords in the database
  3. Have an API to implement most of the security there.

Other than that I really like the project.

Collapse
 
isarisariver profile image
isarisariver

Hi Nav, thanks a lot for taking a look!
You are right, I am already working on the database. The demo is just for a first impression to convince users to sign up.

I am using MongoDB as database, the implementation is almost finished. I was planning to use Auth0, since it's free for up to 7.000 users and I already have a working solution for another project. Using Google/Github etc. for authentication is still on my bucket list, thanks for mentioning it.

It should be possible to offer both at the same time, if I maintain my own userdatabase, right? I can only offer 1 social login with Auth0, but not several.

When both database and authentication are ready I will start sending out emails to the people who requested an invitation.

Collapse
 
bairrada97 profile image
bairrada97

Really nice, I'll not point any bugs or stuffs like that, because major of people already did that, what I want to propose is, since this is a side project and you are learning stuffs, try to build your own drag and drop, will be challenging and funny and you'll learn how to do It :D

Collapse
 
isarisariver profile image
isarisariver

Hi, thanks a lot for checking it out. I "wasted" almost a whole day on this before I started searching for a library. :)

I already had a working solution with HTML5-DND (codepen.io/mrnbck/pen/RwWbYgm) but I couldn't get the animation to work for the "removed" item. I later learned that modern dnd works differently and not with the HTML5-API. Maybe I will get back to it later :)

Collapse
 
llagerlof profile image
Lawrence Lagerlof

Nice. Since it's a side project, you can publish it here too: mysideproject.rocks

Collapse
 
isarisariver profile image
isarisariver

Will do, thanks for sharing! Did you build this?

Collapse
 
llagerlof profile image
Lawrence Lagerlof

No.