Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted over 4 years ago

Todo app

Sami ur Rahman•370
@qsrahman
A solution to the Todo app challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


The app was a joy to work on ✌️. However faced the following problems:

  1. Could not find a way to change the circle radius on hover 😩
  2. The drag and drop made the code unnecessarily complicated 😉 and also It will not work on mobile.

Any help in resolving the above shortcoming will be appreciated.

Happy coding 💕

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Matt Studdert•13,611
    @mattstuddert
    Posted over 4 years ago

    Amazing work on this app, Sami! 🎉

    Great to see you've updated it and the DnD is now working well. If you want the gradient border colour for the active state, the way I'd do it would be to add another div element to wrap the .circle element and make it slightly bigger. Then I'd add a background-color on that element for the default state and a linear-gradient for the hovered state.

    Also, I'd have a go at changing the cursor when you hover over the checkbox and the delete icon. At the moment, it stays as the grabbing hand for the DnD, but it would be great if it changed to the pointer when hovered over those elements as they're clickable.

    Keep up the amazing work! 😍

  • P
    mi souto•135
    @mileine
    Posted over 4 years ago

    Great work! =)

    Your solution does look great and your attention to details made me look to my solution in a different way so I could improve it too.

    I think it's impressive you implemented the drag and drop yourself, but maybe using a library would be a way to solve the issue with mobile devices. I used React Beautiful Dnd by Atlassian - with support for mobile devices - and I'll probably use it again on other projects because I really like the result.

    React Beautiful DnD https://github.com/atlassian/react-beautiful-dnd

    How to Add Drag and Drop in React with React Beautiful DnD https://www.freecodecamp.org/news/how-to-add-drag-and-drop-in-react-with-react-beautiful-dnd/

  • Grace•32,130
    @grace-snow
    Posted over 4 years ago

    Hey I really like this solution, it looks great.

    Shame the drag n drop doesn't work on mobile. I'm not good at React so hard for me to suggest changes, but could it be that drag and drop needs touch events as well as clicks or something? Really not sure what could cause it tbh, just guessing 🤷‍♀️

    Only a very minor suggestion would be to vertically align the crosses in their todo - they look a bit high.

    Maybe wrap the tick circles and the crosses in buttons for better semantics? But not sure about that, I'd have to test with a screen reader to see if that helps or hinders .. 🤔 As the whole card is clickable, its hard to know what the best semantics would be... Maybe it's all fine as it is! 😂

    Really good job overall, this is a hard challenge and you've done well

  • ApplePieGiraffe•30,525
    @ApplePieGiraffe
    Posted over 4 years ago

    Sweet work, Sami ur Rahman! 👏

    Your solution looks and works great! 👍

    I noticed that the state of the to-do list is saved even after I close and reopen the page, so good work on that! 🙌

    Happy coding! 😁

  • Sami ur Rahman•370
    @qsrahman
    Posted over 4 years ago

    Added DnD support using react-beautiful-dnd. The DnD is now working fine on desktop as well as mobile. ✌️

  • P
    mi souto•135
    @mileine
    Posted over 4 years ago

    Awesome!

    About changing the circle border color on hover, you can try changing it on its parent element <li> hover. =)

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit all CSS, SCSS and Less files in your repository.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

How does the JavaScript validation report work?

When a solution is submitted, we use eslint to run an automated check on the JavaScript code.

The report picks out common JavaScript issues such as not using semicolons and using var instead of let or const, among others.

The report will audit all JS and JSX files in your repository. We currently do not support Typescript or other frontend frameworks.

Frontend Mentor for Teams

Frontend Mentor for Teams helps companies and schools onboard and train developers through project-based learning. Our industry-standard projects give developers hands-on experience tackling real coding problems, helping them master their craft.

If you work in a company or are a student in a coding school, feel free to share Frontend Mentor for Teams with your manager or instructor, as they may use it to help with your coding education.

Learn more

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Frontend Mentor for Teams

Frontend Mentor for Teams helps companies and schools onboard and train developers through project-based learning. Our industry-standard projects give developers hands-on experience tackling real coding problems, helping them master their craft.

If you work in a company or are a student in a coding school, feel free to share Frontend Mentor for Teams with your manager or instructor, as they may use it to help with your coding education.

Learn more

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Frontend Mentor for Teams

Frontend Mentor for Teams helps companies and schools onboard and train developers through project-based learning. Our industry-standard projects give developers hands-on experience tackling real coding problems, helping them master their craft.

If you work in a company or are a student in a coding school, feel free to share Frontend Mentor for Teams with your manager or instructor, as they may use it to help with your coding education.

Learn more

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub