Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
30
Comments
230

Andrey

@dar-juMoscow3,890 points

I am a practicing JavaScript Fullstack developer. I try to do tasks as thoroughly as possible. Quality is the first and speed come with experience.

I’m currently learning...

Node.js

Latest solutions

  • Job listings with filtering

    #pinia#vue#sass/scss

    Andrey•3,890
    Submitted 8 days ago

    I would appreciate any feedback and comments!


    0 comments
  • Full-stack Todo app

    #express#mongodb#pinia#sass/scss#vue

    Andrey•3,890
    Submitted 17 days ago

    In terms of the project structure, I may have overcomplicated it.


    2 comments
  • Manage landing page

    #bem#vue#sass/scss

    Andrey•3,890
    Submitted about 1 month ago

    1 comment
  • Multi-step form with PrimeVUE

    #vite#vue#zod#sass/scss

    Andrey•3,890
    Submitted about 1 month ago

    1 comment
  • Interactive comments section

    #pinia#vite#vue#sass/scss

    Andrey•3,890
    Submitted about 2 months ago

    I think there is an easier way to transform the data object.


    0 comments
  • REST Countries API, VUE, TS

    #pinia#sass/scss#typescript#vue#vite

    Andrey•3,890
    Submitted 3 months ago

    1 comment
View more solutions

Latest comments

  • Maxessien•50
    @Maxessien
    Submitted about 15 hours ago
    What are you most proud of, and what would you do differently next time?

    I'm most proud of how the form dynamically adapts to user selections—particularly the toggle between monthly and yearly plans, the automatic price recalculations, and the way selected add-ons update both visually and in the summary section. The real-time form validation with accessibility considerations (like aria-invalid) also adds to a more inclusive user experience.

    Next time, I would refactor parts of the JavaScript for better modularity and maintainability—especially the logic around plan toggling and summary updates, which could be broken into smaller, reusable functions. I’d also consider separating concerns more clearly (e.g., using separate files for validation logic, UI updates, and pricing calculations) and possibly integrating a frontend framework like React or Svelte for more scalable state management and reactivity.

    What challenges did you encounter, and how did you overcome them?

    One of the main challenges was managing the state of multiple interdependent components—such as syncing the selected plan with its price, toggling between billing cycles, and updating add-on selections in both UI and summary. It was easy for small logic issues to cause inconsistencies, especially when toggling between monthly and yearly pricing.

    To overcome this, I carefully structured event listeners and used consistent class toggling (selected-plan, shift-l, shift-r) to track the UI state. I also centralized logic for recalculating prices and updating summaries through dedicated functions like summaryHeadUpdate() and calculateTotal() to avoid redundancy. Testing and refining each step interaction helped ensure a smooth user experience across different screen sizes and inputs.

    What specific areas of your project would you like help with?
    1. Form Validation Enhancements
      I'd like feedback on improving the validation logic. Right now, it's handled on blur and before progressing to the next step, but I’m unsure if the current method is scalable or the most accessible for screen readers.

    2. Responsive Layout Optimization
      The layout changes for smaller screens, but I feel the transition between desktop and mobile could be more fluid. I'd appreciate suggestions on better ways to handle this, especially regarding flex/grid layout restructuring.

    3. Code Readability and Refactoring
      I used a lot of forEach loops and manual DOM manipulation. I'd love tips on how to refactor this JavaScript to make it more modular, maintainable, or even more performant—perhaps using component-based structures or utility functions.

    4. Accessibility
      I added basic ARIA attributes, but I’m not sure if the form is fully accessible. I'd like detailed feedback on improving keyboard navigation, focus management between steps, and screen reader compatibility.

    5. Scalable Pricing Logic
      The pricing and toggle logic are currently hardcoded and a bit repetitive. I’d appreciate suggestions on how to structure pricing data (e.g., using objects or JSON) to make the logic more dynamic and easier to extend.

    Frontend Mentor | Multi-step form

    #sass/scss
    1
    Andrey•3,890
    @dar-ju
    Posted about 12 hours ago

    Hi Maxessien!

    I find your work quite detailed and thorough, you are great!

    I found a few things that could be improved or fixed.

    First of all, HTML, you have a few errors:

    • <div class="steps" aria-label="Form steps navigation"><span class="steps-num active">1</span><span class="steps-indicator">Step 1<p>Your info</p></span></div> why are you putting p in span? you can't do that. Change p to span
    • same as putting div in label, it is an error
    • same as h3 in span, change span to div
    • you have a form on all pages, but you moved the button outside of it, it is not advisable to do this, the button should be in the form and be responsible for processing the form
    • on the add-ons page you use ul and li and this is good, and on the plan page there is also a list of plans

    About the logic of the fields:

    • shows an error for the phone number if there are not enough digits, but does not show how many there should be
    • when you click the Confirm button, reset all fields in case you need to fill out the form again

    About the visual part:

    • add .toggle-display cursor: pointer; to the entire field so that you can understand that the entire element can be clicked. And fix the block from span to div
    • on the section number fields, on the contrary, cursor: pointer; is set, but nothing happens when clicked, either remove this line or add logic

    To summarize briefly: you need to figure out when to use span (text element) and when div (block element), you need to include all form controls in the form, including the button.

    Otherwise, great, good luck with your development!

  • Martin•560
    @nonso01
    Submitted 5 days ago
    What specific areas of your project would you like help with?

    I am open for help and possible corrections

    Product List With Cart

    #vue#vite
    2
    Andrey•3,890
    @dar-ju
    Posted 5 days ago

    Hi Martin!

    Great job! I really like neat work.

    I noticed a few things that could be fixed:

    • for the Add to cart button, add cursor: pointer; so it's clear that you can click it. In general, this is a button, not a container, use a button instead of a div
    • reduce one click for the user - add 1 product at once when clicking Add to cart
    • with a screen resolution of 600 - 1200px, the content is pressed to the edges of the screen, this is not very good, add side paddings
    • you need to pay more attention to semantics, then the sites you make will be indexed higher by search engines. class="cover" is a list of products, so the <ul> tag, each product is an <li>. Leave the alt empty for icons and background images, they should not be indexed. "+" and "-" are also buttons, use <button>

    Tags should be treated as carefully as the layout itself, because the site is viewed not only by people, but also by search engines and readers

    Otherwise, great, good luck with your developments!

  • P
    Ivo•140
    @ijerkov
    Submitted 8 days ago
    What are you most proud of, and what would you do differently next time?

    I am glad that I achieved responsiveness without any media queries, by using grid and picture with srcset.

    What specific areas of your project would you like help with?

    I am not sure my implementation of the button with icon is optimal.

    Product preview card component, HTML + CSS

    1
    Andrey•3,890
    @dar-ju
    Posted 8 days ago

    Hi ijerkov!

    Great job, you did well!

    About the icon question. There are many ways to add such an image, including via image-backgroun, you can insert svg code directly into the html code, and your option is also correct. Just keep in mind that this is just a decorative icon, you don't need search engines to index it - leave the alt value empty.

    But for the main image in alt you can write in more detail what it is, for example, insert the name of the product there.

    And also, look at the block with prices, it is better to wrap them in a <div> tag, not <p>

    Otherwise everything is great, good luck with the development!

    Marked as helpful
  • Tetiana•390
    @TetianaAleks
    Submitted 8 days ago
    What specific areas of your project would you like help with?

    I’d really appreciate any feedback on my solution, especially regarding code structure, accessibility, responsiveness, and user experience. Any suggestions will help me improve!

    Stats preview card component

    #bem
    2
    Andrey•3,890
    @dar-ju
    Posted 8 days ago

    Hi, Tetiana!

    Awesome work!

    What I would change:

    • the picture is not just some abstract image or figures, it is a fully-content image. Content for a search engine can only be transmitted via the <img> tag with a description in alt. In more complex works, you will always need to ask yourself - is this a content image or just a decorative element? And then decide how to position it correctly
    • at a screen width of 760px, the block seems too narrow, you can remove the fixed width and make side paddings
    • the card__stats block is more of a list, use ul
    • there is an important point about the height of the blocks, use a fixed height very carefully. Imagine that there will be 5 times more text in the card - add it and check what happens. The text will simply go beyond the block. And your layout should be resistant to changes

    Otherwise, everything is great, keep up the good work!

    Marked as helpful
  • Nafis Sazzad Niloy•190
    @methane-js
    Submitted 8 days ago
    What are you most proud of, and what would you do differently next time?

    I am mostly proud because I have successfully completed an advanced CSS Grid Project.

    The project clearly reflects my expertise on CSS Grid.

    What challenges did you encounter, and how did you overcome them?

    The challenge was to make the Grid layout perfectly. But using the CSS Grid properties I made it successfully,

    What specific areas of your project would you like help with?

    If you find any improvements in my project, please let me know

    Responsive Grid Layout

    1
    Andrey•3,890
    @dar-ju
    Posted 8 days ago

    Great job!

    But the grid can be used more effectively. Firstly, when changing the screen width, you don't need to switch from grid to flex, grid can manage blocks well. You started correctly by assigning 4 columns to the grid, on the next media query, make it not 4, but 3 and move the right column down, that is, make 3 rows. And so on as the screen narrows.

    As a result, you don't need to switch to flex, your grid will just consist of 1 column.

    In the steel, everything is great, what can be improved - remove the extra div container for img, move the "image" class to img. For quotes, you can use the <blockquote> tag

    Good luck with your development!

  • VeyronShark•130
    @VeyronShark
    Submitted 11 days ago
    What are you most proud of, and what would you do differently next time?

    I am most proud of the accuracy I achieved and the problems I encountered not only within the code but even in the CLI. What I would do differently is the way I looked at the spacing of components in the design image. I overlooked the fact that styling the button first would have given me a really good estimate of the padding of the second section.

    What challenges did you encounter, and how did you overcome them?

    I didn't encounter too many code related challenges. I only encountered an issue where some of my changes were not applying only to realise that the npx tailwind --watch command was off. I had exited the command to use the terminal for git purposes.

    What specific areas of your project would you like help with?

    I want to know how I can make the code more semantic and if there are any utility classes I could have used to make the code shorter

    Product preview card using TailwindCSS

    #tailwind-css
    1
    Andrey•3,890
    @dar-ju
    Posted 11 days ago

    Hi, VeyronShark!

    Great job!

    Yes, your code can be made more semantically correct.

    This image is an image of this specific product and it is content. It should be connected not as a background but as an <img> and with the alt field filled in.

    Next, use the div tag for blocks and containers, there are other tags for text. Product description is <p>, price is <span> or <strong>, button is <button>

    If you use tailwind, then it is difficult to make your code shorter, tailwind adds a lot of its own classes. If you need the shortest possible code, then use pure CSS.

    I hope I answered your questions.

    Good luck with your development and future projects!

    Marked as helpful
View more comments
Frontend Mentor logo

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

Mentor of the Week - 3rd Place

This badge is awarded to the 3rd placed community member on the weekly Wall of Fame.

Fun fact

The Hansen Writing Ball shown in the badge was the first commercially produced typewriter. It was put into production in 1870 with its unique ergonomic design. It was overtaken in the market in 1873 by the Sholes and Glidden typewriter which was the first keyboard to utilise the QWERTY layout we now use today.

Mentor of the Week - 2nd Place

This badge is awarded to the 2nd placed community member on the weekly Wall of Fame.

Fun fact

Keypunches were used in early computing to punch precise holes in stiff paper card. The punched cards were then used for data input, output, and storage. No code linters or auto-complete suggestions to help out back then! 😅

Mentor of the Month - 2nd Place

This badge is awarded to the 2nd placed community member on the monthly Wall of Fame.

Fun fact

The computer in this badge is loosely based on the Commodore PET which was one of the earliest home computers launched in 1977. It came with 4 KB of RAM...that's not a typo!

Mentor of the Month - 3rd Place

This badge is awarded to the 3rd placed community member on the monthly Wall of Fame.

Fun fact

An abacus is an ancient calculating tool. These days we would typically use a calculator or computer but the abacus is where it all started!

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

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

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

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

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

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

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

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

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

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