This is a Next.js-based website that describes attestation services available on the Solana blockchain.
-
Production Site: https://solana-attestation-site.vercel.app
-
Production CMS: https://attest.sanity.studio
-
Production Docs: https://solana-attestation-site.vercel.app/docs
-
Dev CMS: https://attest-dev.sanity.studio
-
Dev Docs: https://solana-attestation-site-dev.vercel.app/docs
The project follows the Feature-Sliced Design (FSD) architecture with the following high-level structure:
app/ # Next.js app router
src/
├── app/ # High-level app components
├── features/ # Feature-specific components
├── entities/ # Business entities
├── widgets/ # Composite components
├── shared/
│ ├── ui/ # All UI components
│ ├── sanity/ # Sanity schemas and configuration
│ └── ... # Other shared utilities and APIs
- Next.js
- Tailwind CSS
- TypeScript
- Sanity CMS
- pnpm (package manager)
- Vercel (deployment)
The project follows a two-branch strategy for managing deployments:
main
: Production branch, deployed to the production environmentdevelopment
: Staging branch, used for pre-production testing
-
For any new feature or bugfix:
- Create a new branch from
development
- Use a descriptive name (e.g.,
feature/attestation-form
orfix/header-alignment
) - Implement your changes
- Open a Pull Request to the
development
branch
- Create a new branch from
-
After code review and approval:
- Merge into
development
for staging deployment - Once tested in staging, changes can be promoted to
main
for production
- Merge into
- Follow the established code style and FSD architecture
- Write meaningful commit messages
- Include comments where necessary
When modifying Sanity schemas:
- Make changes to schema files in
src/shared/sanity/schema/
- Generate TypeScript types by running:
pnpm run typegen
Note: The type generation process runs automatically on every build, but you may want to run it manually during development.
Schema changes are automatically deployed when:
- Changes are merged to the
development
branch (deploys to staging CMS) - Changes are merged to the
main
branch (deploys to production CMS)
This automatic deployment is triggered whenever files in the src/shared/sanity
directory are modified during a build.