This is a note for myself on what to remember, overcoming gremlins I've encountered, and otherwise notes for my future self and others.
- limit non-pros to:
- only have x number of companions?
- only being able to add philosophers?
- limit the categories they can set (companion-form.tsx Select)
- Companion Creation Form explanation
- Conditional rendering of role based message (chat-message.tsx, etc)
- Dark/light mode force
- what are hydration issues here
- how Typsescript uses Types
- dynamic rendering of className srings (clsx or cn, in my project)
- Debouncing techniques (/hooks/use-debounce)
- Debouncing is a programming practice used to ensure that time-consuming tasks do not fire so often, that it leads to intensive CPU usage. It is a process that adds a delay to the function execution. If the same event is triggered before the delay period, the timer resets. This is particularly useful in scenarios where you want to limit the rate of execution of a function, especially in events like scrolling, resizing, keypress etc. in JavaScript.
- Prisma (Sequelize equiv)
- Prisma is an open-source database toolkit. It replaces traditional ORMs and makes database access easy with an auto-generated and type-safe query builder that's tailored to your database schema. It currently supports PostgreSQL, MySQL, SQL Server and SQLite.
- Shadcn
- Shadcn is a lightweight, flexible, and efficient shadow DOM library for building web components. It provides a simple and intuitive API for creating and managing shadow DOM trees, making it easier to build encapsulated, reusable components.
- Uploading images using Cloudinary