Services Directory
Location: src/services/
Purpose: Data access layer that abstracts Supabase queries and business logic.
Structure
services/
├── acessCheck/
│ └── acessCheck.ts # Access checking service
│
├── campaign/ # Campaign data services
│ ├── checkIfAlreadyActiveRate.ts
│ ├── checkInviteToken.ts
│ ├── fetch_campaign_circulator_view.ts
│ ├── fetchRateRecordEdit.ts
│ ├── fetchTransactionRecordEdit.ts
│ ├── getCampaignBySlug.ts
│ ├── getCampaigns.ts
│ ├── getCampaignsForUser.ts
│ └── getCampaignSlugSuperAdmin.ts
│
├── credentials/
│ └── fetchCredentialsRecordEdit.ts
│
├── permission-sets/ # Responsibilities services
│ ├── fetchCampaignPermissionSets.ts
│ ├── fetchPermissionAllSets.ts
│ ├── fetchPermissionSetEdit.ts
│ └── fetchTeamPermissionSets.ts
│
├── permissions/ # Permission services
│ ├── fetchPermissionKeyEdit.ts
│ ├── fetchPermissionKeysList.ts
│ ├── fetchRoleEdit.ts
│ ├── fetchRoles.ts
│ └── fetchRolesForTeam.ts
│
├── petitions/ # Petition services
│ ├── createNewPetition.ts
│ ├── getDefaultCountyByUser.ts
│ ├── getLastestValueByUserInPetitions.ts
│ ├── getPetitionById.ts
│ ├── getPetitionFormatById.ts
│ ├── getPetitionFormatForEdit.ts
│ ├── getPetitionsFormatForCampaign.ts
│ ├── getPetitionsForUser.ts
│ ├── getPreviousBlockListOfPetition.ts
│ ├── getPreviousSelectedFormat.ts
│ ├── getRecentCirculators.ts
│ └── getSessionBasedTurnInDate.ts
│
├── teams/ # Team services
│ ├── checkMemberToken.ts
│ ├── fetchSubTeams.ts
│ ├── getMemberToken.ts
│ ├── getSubTeamById.ts
│ ├── getSubTeamForEdit.ts
│ ├── getTeamById.ts
│ ├── getTeamForEdit.ts
│ ├── getTeamMemberForEdit.ts
│ └── getUserTeams.ts
│
└── user/ # User services
├── getAuthUser.ts
├── getUserByEmailClient.ts
└── getUserList.ts
Service Characteristics
- Server-only: All services use
"use server"directive - Type-safe: Return standardized
QueryResponsetypes - Supabase Integration: Use server-side Supabase client
- Business Logic: Encapsulate complex queries and data transformations
- Reusability: Used by Server Actions and Server Components