add more context for the ecosystem, with some specific cursor rules files
This commit is contained in:
56
.cursor/rules/README.mdc
Normal file
56
.cursor/rules/README.mdc
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Time Safari / Endorser Search Tech Ecosystem
|
||||
|
||||
### Purpose
|
||||
|
||||
This describes the overall design & architecture across code repositories.
|
||||
|
||||
The Endorser Server is a service that allows recording of cryptographically signed assertions in a privacy-preserving fashion. Each participant chooses whether to allow any other participant to see their name attached to activity. The service is a convenient way to get basic functions; we expect to provide direct P2P communications to support the same functionality for anyone who wants the alternative.
|
||||
|
||||
Time Safari is a front-end to make it intuitive and interesting to log self-asserted items, mainly of three kinds:
|
||||
|
||||
- Gives, recognizing something given
|
||||
|
||||
- Projects, which can then be the giver or recipient of gives
|
||||
|
||||
- Offers of help, to individuals or projects, which can be fulfilled by subsequent gives
|
||||
|
||||
### Structure
|
||||
|
||||
The primary repos contain the majority of the functionality; the secondary repos are helpful but not absolutely necessary.
|
||||
|
||||
These repos are found on the local filesystem in the same directory as this repo, in ../../../ from this file.
|
||||
|
||||
Primary Repos:
|
||||
|
||||
- endorser-ch is the back-end, written in Typescript
|
||||
|
||||
- crowd-funder-for-time-pwa is the front-end, written in Typescript with Vue & Vite, with deployments for mobile as well as web
|
||||
|
||||
Secondary Repos:
|
||||
|
||||
- image-api is a service for storing images, in Typescript
|
||||
|
||||
- py-push-server is a service to send push notifications
|
||||
|
||||
- lives-of-gifts is the website for the overall vision for humanity
|
||||
|
||||
- gifting-org-content is for design and other creative artifacts
|
||||
|
||||
- kickstarter-for-time is a playground to implement HTML designs that are subsequently moved into crowd-funder-for-time-pwa
|
||||
|
||||
- uport-demo is the web-facing front-end to explain the Endorser server
|
||||
|
||||
- endorser-docs is the documentation explaining the Endoser server design, in Restructured Text format
|
||||
|
||||
- time-safari-web is for the single pages at timesafari.org & timesafari.com
|
||||
|
||||
- endorser-mobile is the previous native app to talk to the Endorser server -- very powerful but harder to use
|
||||
|
||||
These repos are located in GitHub: endorser-ch, endorser-mobile, lives-of-gifts uport-demo, endorser-docs, time-safari-web
|
||||
|
||||
The remaining repos are located at gitea.anomalistdesign.com
|
||||
86
.cursor/rules/node-express.mdc
Normal file
86
.cursor/rules/node-express.mdc
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
description: Node.js and Express.js best practices for backend development
|
||||
globs: **/*.js, **/*.ts, src/**/*.ts
|
||||
---
|
||||
|
||||
# Node.js and Express.js Best Practices
|
||||
|
||||
## Project Structure
|
||||
- Use proper directory structure
|
||||
- Implement proper module organization
|
||||
- Use proper middleware organization
|
||||
- Keep routes organized by domain
|
||||
- Implement proper error handling
|
||||
- Use proper configuration management
|
||||
|
||||
## Express Setup
|
||||
- Use proper middleware setup
|
||||
- Implement proper routing
|
||||
- Use proper error handling
|
||||
- Configure proper security middleware
|
||||
- Implement proper validation
|
||||
- Use proper static file serving
|
||||
|
||||
## API Design
|
||||
- Use proper REST principles
|
||||
- Implement proper versioning
|
||||
- Use proper request validation
|
||||
- Handle errors properly
|
||||
- Implement proper response formats
|
||||
- Document APIs properly
|
||||
|
||||
## Database Integration
|
||||
- Use proper ORM/ODM
|
||||
- Implement proper migrations
|
||||
- Use proper connection pooling
|
||||
- Implement proper transactions
|
||||
- Use proper query optimization
|
||||
- Handle database errors properly
|
||||
|
||||
## Authentication
|
||||
- Implement proper JWT handling
|
||||
- Use proper password hashing
|
||||
- Implement proper session management
|
||||
- Use proper OAuth integration
|
||||
- Implement proper role-based access
|
||||
- Handle auth errors properly
|
||||
|
||||
## Security
|
||||
- Use proper CORS setup
|
||||
- Implement proper rate limiting
|
||||
- Use proper security headers
|
||||
- Implement proper input validation
|
||||
- Use proper encryption
|
||||
- Handle security vulnerabilities
|
||||
|
||||
## Performance
|
||||
- Use proper caching
|
||||
- Implement proper async operations
|
||||
- Use proper connection pooling
|
||||
- Implement proper logging
|
||||
- Use proper monitoring
|
||||
- Handle high traffic properly
|
||||
|
||||
## Testing
|
||||
- Write proper unit tests
|
||||
- Implement proper integration tests
|
||||
- Use proper test runners
|
||||
- Implement proper mocking
|
||||
- Test error scenarios
|
||||
- Use proper test coverage
|
||||
|
||||
## Deployment
|
||||
- Use proper Docker setup
|
||||
- Implement proper CI/CD
|
||||
- Use proper environment variables
|
||||
- Configure proper logging
|
||||
- Implement proper monitoring
|
||||
- Handle deployment errors
|
||||
|
||||
## Best Practices
|
||||
- Follow Node.js best practices
|
||||
- Use proper async/await
|
||||
- Implement proper error handling
|
||||
- Use proper logging
|
||||
- Handle process signals properly
|
||||
- Document code properly
|
||||
57
.cursor/rules/typescript.mdc
Normal file
57
.cursor/rules/typescript.mdc
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
description: TypeScript coding standards and best practices for modern web development
|
||||
globs: **/*.ts, **/*.tsx, **/*.d.ts
|
||||
---
|
||||
|
||||
# TypeScript Best Practices
|
||||
|
||||
## Type System
|
||||
- Prefer interfaces over types for object definitions
|
||||
- Use type for unions, intersections, and mapped types
|
||||
- Avoid using `any`, prefer `unknown` for unknown types
|
||||
- Use strict TypeScript configuration
|
||||
- Leverage TypeScript's built-in utility types
|
||||
- Use generics for reusable type patterns
|
||||
|
||||
## Naming Conventions
|
||||
- Use PascalCase for type names and interfaces
|
||||
- Use camelCase for variables and functions
|
||||
- Use UPPER_CASE for constants
|
||||
- Use descriptive names with auxiliary verbs (e.g., isLoading, hasError)
|
||||
- Prefix interfaces for React props with 'Props' (e.g., ButtonProps)
|
||||
|
||||
## Code Organization
|
||||
- Keep type definitions close to where they're used
|
||||
- Export types and interfaces from dedicated type files when shared
|
||||
- Use barrel exports (index.ts) for organizing exports
|
||||
- Place shared types in a `types` directory
|
||||
- Co-locate component props with their components
|
||||
|
||||
## Functions
|
||||
- Use explicit return types for public functions
|
||||
- Use arrow functions for callbacks and methods
|
||||
- Implement proper error handling with custom error types
|
||||
- Use function overloads for complex type scenarios
|
||||
- Prefer async/await over Promises
|
||||
|
||||
## Best Practices
|
||||
- Enable strict mode in tsconfig.json
|
||||
- Use readonly for immutable properties
|
||||
- Leverage discriminated unions for type safety
|
||||
- Use type guards for runtime type checking
|
||||
- Implement proper null checking
|
||||
- Avoid type assertions unless necessary
|
||||
|
||||
## Error Handling
|
||||
- Create custom error types for domain-specific errors
|
||||
- Use Result types for operations that can fail
|
||||
- Implement proper error boundaries
|
||||
- Use try-catch blocks with typed catch clauses
|
||||
- Handle Promise rejections properly
|
||||
|
||||
## Patterns
|
||||
- Use the Builder pattern for complex object creation
|
||||
- Implement the Repository pattern for data access
|
||||
- Use the Factory pattern for object creation
|
||||
- Leverage dependency injection
|
||||
- Use the Module pattern for encapsulation
|
||||
Reference in New Issue
Block a user