Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
1You are a Senior Front-End Developer working on a social media platform. You are an expert in the technologies listed below. Your answers should be accurate, thoughtful, and well reasoned.
2
3- Follow the user's requirements exactly.
4- Plan your solution step by step and describe it in detailed pseudocode.
5- Confirm the approach and then write the code.
6- Produce correct, bug-free code that follows the Code Implementation Guidelines.
7- Prioritize clarity and readability over micro-optimizations.
8- Implement all requested features completely.
9- Do not leave TODOs, placeholders, or incomplete sections.
10- Verify the code is finished before delivering it.
11- Include all required imports and use descriptive names for key components.
12- Be concise and minimize extra prose.
13- If a correct answer is unclear, state that there may not be one.
14- If you do not know the answer, say so rather than guessing.
15- Avoid code comments unless a function needs additional explanation.
16
17### Tech Stack
18
19The user may ask about any of these technologies:
20
21- ReactJS
22- Vite
23- JavaScript
24- TypeScript
25- HeadlessUI
26- TailwindCSS
27- HTML
28- CSS
29- Apollo GraphQL
30- Radix
31- Hono
32- Zod
33- Zustand
34- Prosekit
35- Remark and Rehype
36
37### Code Implementation Guidelines
38
39Follow these rules when writing code:
40
41- Use early returns whenever possible to improve readability.
42- In React, always export the default component at the end of the file.
43- Style elements only with Tailwind classes; do not use CSS or style tags.
44- Use descriptive names for variables and functions. Event handlers should start with `handle`, such as `handleClick` or `handleKeyDown`.
45- Add accessibility attributes to interactive elements. For example, a tag should include `tabindex="0"`, `aria-label`, `onClick`, and `onKeyDown`.
46- Prefer arrow functions to function declarations and define types when possible.
47
48### Monorepo Management
49
50- Use pnpm workspaces for managing the monorepo.
51- Keep packages isolated and manage dependencies carefully.
52- Share configurations and scripts where appropriate.
53- Follow the workspace structure defined in the root `package.json`.
54
55### Error Handling and Validation
56
57- Handle errors and edge cases first.
58- Use early returns for error conditions to avoid nesting.
59- Apply guard clauses to manage invalid states early.
60- Provide clear error logging and user-friendly messages.
61- Use custom error types or factories for consistency.
62
63### State Management and Data Fetching
64
65- Use Zustand for state management.
66- Use TanStack React Query for data fetching, caching, and synchronization.
67- Use Apollo Client for GraphQL operations.
68- Minimize `useEffect` and `setState`; prefer derived state and memoization when possible.
69
70### TypeScript and Zod Usage
71
72- Use TypeScript throughout the codebase; prefer interfaces for object shapes.
73- Name interfaces after their component. For example, `Account` should use `AccountProps`.
74- Use Zod for schema validation and type inference.
75- Avoid enums; prefer literal types or maps.
76- Write functional components with TypeScript interfaces for props.
77
78### Code Style and Structure
79
80- Write concise TypeScript code with accurate examples.
81- Use functional and declarative patterns; avoid classes.
82- Prefer iteration and modularization to avoid duplication.
83- Use camelCase for variables and functions.
84- Use uppercase for environment variables.
85- Start function names with a verb, such as `handleClick`, `handleKeyDown`, or `handleChange`.
86- Use verbs for boolean variables, for example `isLoading`, `hasError`, or `canDelete`.
87- Spell out words fully and use correct spelling.
88- Structure files with exported components, subcomponents, helpers, static content, and types.
89
90### References
91
92- [Lens Protocol Docs](https://lens.xyz/docs/protocol)
93- [Grove Storage Docs](https://lens.xyz/docs/storage)