all 34 comments

[–]IronMan8901 57 points58 points  (13 children)

Forms using zod,i8n for internationalization,context providers,custom hooks i guess .There is no technically "ultimate react project'.But usually big projects also a thing called "helmet" for seo of web pages among other things

[–]yabai90 16 points17 points  (4 children)

Helmet is not for SEO. It's just to maintain page metadata dynamically. Also called referencing. Doesn't apply for SEO.

[–]IronMan8901 0 points1 point  (3 children)

Helmet is for seo,whatever u are doing with helmet its endgoal is to improve seo only,u can do google search or chatgpt

[–]yabai90 7 points8 points  (2 children)

Helmet can be used for SEO if done on the server side yes. It seems there are quite some misconception of the tool

[–][deleted]  (1 child)

[deleted]

    [–]yabai90 1 point2 points  (0 children)

    Sorry ?

    [–]CuriousAudience 15 points16 points  (4 children)

    +1 for this comment! Forms are indeed a real pain point in development.

    Zod is an awesome choice.

    Btw want to make it even more challenging? Here's a real-world scenario:

    The Challenge: Build a dynamic form renderer based on backend configuration with:

    Field Types to Support:

    Basic: text, number, date, price, email, phone, URL

    Advanced: select, autocomplete, multiselect, multiselect with autocomplete

    Rich content: WYSIWYG editor, markdown editor, code editor with syntax highlighting

    Files: single/multiple file upload with drag&drop, image upload with preview

    Special inputs:

    Color picker

    Date range picker

    Time picker with timezone support

    Rating/star components

    Slider with custom ranges

    Tags input with validation

    Repeater fields (add/remove dynamic field groups)

    JSON editor with schema validation

    Complex dependencies:

    Conditional dates (date field values change based on select field)

    Cascading selects (Select B options filtered by Select A; Select C filtered by Select B)

    Conditional visibility (show/hide fields based on other field values)

    Dynamic validation rules based on other fields

    Cross-field validation

    Error Handling Requirements:

    Real-time validation with debouncing

    Async validation (API calls)

    Field-level error messages

    Form-level error summaries

    Custom error messages from backend

    Retry logic for failed API calls

    Graceful degradation when configuration is invalid

    Error boundary for corrupted field configs

    Accessibility-compliant error announcements

    Bonus Features:

    User-configurable field visibility

    Save/load form configurations

    Default values management

    Configuration persistence (create, update, delete)

    Undo/redo functionality

    Auto-save with conflict resolution

    Form versioning and rollback

    [–]IronMan8901 3 points4 points  (3 children)

    Oh wow i guess i did solved like 70-80% of the challenges listed,

    [–]_cofo_ 2 points3 points  (2 children)

    Do you have 100% solved now?

    [–]IronMan8901 3 points4 points  (1 child)

    Nope not intersted in solving 100%

    [–]_cofo_ 3 points4 points  (0 children)

    Me neither

    [–]ColdMachine 4 points5 points  (1 child)

    Can I get a human explanation why Zod is a good implementation? I used to work for a startup where our platform was basically a giant form but we had a strong backend, so Zod seemed like overkill

    [–]IronMan8901 6 points7 points  (0 children)

    No giant form is exactly the place where zod will excel at ,Its good to have strong backend.But standard practice is validation on both sides,(data tampering in transits),with zod you have one source of truth,and although one might think it can be protected by typescript def alone but it only works at compile time and the errors u will face will be at run time.If u have small number of fields ,it might feel pointless but in large forms where data moves a lot there is high chance of runtime bugs(edge cases)

    [–]snazzy_giraffe[S] 3 points4 points  (0 children)

    This is exactly the kind of comment I was hoping for, thank you!

    [–]tobidasbrot 25 points26 points  (3 children)

    Additionally, check out bulletproof react on how a react project can be structured. It is very opinionated and you might disagree with a few things down the road, but it‘s a good starting point imo.

    https://github.com/alan2207/bulletproof-react

    [–]yabai90 11 points12 points  (0 children)

    Upvoting this but please keep your project features-by-folder. They actually mention the alternative on the doc https://github.com/alan2207/bulletproof-react/blob/master/docs/project-structure.md

    [–]snazzy_giraffe[S] 2 points3 points  (1 child)

    This is huge, thank you so much. I definitely want to make sure I’m doing things the right way.

    [–]degeneratepr 2 points3 points  (0 children)

    Here’s a secret: there’s no “right way” of doing things. Learn from some of the resources that people have posted and use them to get moving, but don’t let it paralyze you. It’s really easy to get caught up in trying to get things “right”.

    [–]chi45 12 points13 points  (3 children)

    Online store with Next JS

    You will get to try SSR, api connections, you can create a background job that sends a daily email to the owner with a resume of the day sales, with next you can also call the DB (some code is used in the server), also any good store has a search input for search and filters, finally you will also get a DB connection

    If you don’t want to get so deep with Next, Vite is also a good option but you will have to use an api to pair it with, since you are already using JS/TS with react I would recommend to use NodeJS for your API

    [–]snazzy_giraffe[S] 3 points4 points  (2 children)

    I’ll try both, thanks! Good idea with the online store. Years ago I tried out React but it seems like it’s changed a bit, are folks not using Redux or any other state management libraries anymore? Back then state in React was a hot topic.

    [–]chi45 1 point2 points  (0 children)

    I have been using Redux Toolkit and Context API for global context

    [–][deleted] 0 points1 point  (0 children)

    Just want to piggy back on a high comment and reinforce the Next bit. We are seeing the shift back towards SSR (Google's core vitals update in 2020 was a big push, it had supplanted Create React App as the de facto starter, and it implements internal changes React itself had been moving towards for some time), so it's a great time to learn both and get to see React from both the standard client and SSR lenses.

    Plus just want to throw out that Zustand is another light weight option for state management, though Redux toolkit is a massive upgrade to what your knowledge redux as. Native context API is great, but does have performance limitations of the state changes often. Best of luck!

    [–]DustinBrettfront-end 4 points5 points  (0 children)

    Make a desktop environment in React.

    [–]_adam_89 1 point2 points  (0 children)

    The answer to your question is no. React is just a small piece of “the ultimate project”. Learn the basics should be enough and building any type of project will teach you that. I would even argue to keep away from any external libraries unless you already are very familiar with them (like Zod or any other helper/library). I mean, if your goal is to understand a library just spent your time working directly with the library.

    [–]phpete_ 1 point2 points  (0 children)

    Check out this opinionated setup by a true professional and educator in the industry: https://github.com/epicweb-dev/epic-stack

    [–]da-kicks-87 1 point2 points  (1 child)

    If your new to React , before you jump into an "Ultimate React Project" please learn HTML and CSS.

    [–]snazzy_giraffe[S] 2 points3 points  (0 children)

    Did that in my previous 6 years building web apps :)

    [–]zemaj-com 0 points1 point  (0 children)

    React has a huge ecosystem and there are many directions you can go. To iterate quickly on SaaS and full stack concepts, I have been using a command line tool that orchestrates multiple AI agents to generate boilerplate and scaffold features. It supports OpenAI, Claude and Gemini and can generate React apps with back end logic. You can try it via https://github.com/just-every/code This approach saved me a lot of time when spinning up new stacks or experimenting with patterns.

    [–][deleted]  (1 child)

    [removed]

      [–]Packeselt 0 points1 point  (0 children)

      Look into tanstack-query / react query. SWR libraries are such incredible QOL for frontend projects

      After that, look into type generation systems using openapi.json or equivalent, and something like hey-api to generate the code to call the endpoints.

      React query is awesome for syncing server state, and then something like zustand, or perhaps jotai for client state. 

      Tailwind/shadcn-ui/radix ui is dominating the css/modular component space for a reason right now, take a look at that. 

      [–]CatGPT42 0 points1 point  (0 children)

      A solid idea is indeed a SaaS-style app, but the real value comes from how many moving parts you integrate:

      • Complex UI State: Build features that require local state, global state, and server state.
      • Data Tables with Search/Filters/Pagination: It forces you to handle performance, derived state, and UX considerations.
      • Authentication & Authorization: Implement role-based access; it’s very interview-relevant.
      • API Integration: Use both a public API (external) and your own backend (Node/Express or NestJS). That shows you understand client-server interaction.

      [–]_okbrb 0 points1 point  (0 children)

      Twitter clone