Compare commits
7 Commits
nico/17-ja
...
nico/30-ja
| Author | SHA1 | Date | |
|---|---|---|---|
| 8afbaabd91 | |||
| f0425cfc47 | |||
| c2ad515366 | |||
| d9ce4aac6d | |||
| 3fcfec22fb | |||
| 6ca1e032a6 | |||
| 78c55a8a71 |
3
.vscode/extensions.json
vendored
Normal file
3
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"recommendations": []
|
||||
}
|
||||
167
AGENTS.md
Normal file
167
AGENTS.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# AGENTS.md
|
||||
|
||||
This file contains essential information for agentic coding agents working in the desa-darmasaba repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
Desa Darmasaba is a Next.js 15 application for village management services in Badung, Bali. It uses:
|
||||
- **Framework**: Next.js 15 with App Router
|
||||
- **Language**: TypeScript with strict mode
|
||||
- **Styling**: Mantine UI components with custom CSS
|
||||
- **Backend**: Elysia.js API server integrated with Next.js
|
||||
- **Database**: PostgreSQL with Prisma ORM
|
||||
- **State Management**: Jotai for global state
|
||||
- **Authentication**: JWT with iron-session
|
||||
|
||||
## Build Commands
|
||||
|
||||
```bash
|
||||
# Development
|
||||
npm run dev
|
||||
|
||||
# Production build
|
||||
npm run build
|
||||
|
||||
# Start production server
|
||||
npm start
|
||||
|
||||
# Database seeding
|
||||
bun run prisma/seed.ts
|
||||
|
||||
# Linting (ESLint)
|
||||
npx eslint .
|
||||
|
||||
# Type checking
|
||||
npx tsc --noEmit
|
||||
|
||||
# Prisma operations
|
||||
npx prisma generate
|
||||
npx prisma db push
|
||||
npx prisma studio
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
Currently no test framework is configured. When adding tests:
|
||||
- Set up test scripts in package.json
|
||||
- Consider Jest or Vitest for unit testing
|
||||
- Use Playwright for E2E testing
|
||||
- Update this section with specific test commands
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### Imports
|
||||
- Use absolute imports with `@/` alias (configured in tsconfig.json)
|
||||
- Group imports: external libraries first, then internal modules
|
||||
- Keep import statements organized and remove unused imports
|
||||
|
||||
```typescript
|
||||
// External libraries
|
||||
import { useState } from 'react'
|
||||
import { Button, Stack } from '@mantine/core'
|
||||
|
||||
// Internal modules
|
||||
import ApiFetch from '@/lib/api-fetch'
|
||||
import { MyComponent } from '@/components/my-component'
|
||||
```
|
||||
|
||||
### TypeScript Configuration
|
||||
- Strict mode enabled (`"strict": true`)
|
||||
- Target: ES2017
|
||||
- Module resolution: bundler
|
||||
- Path alias: `@/*` maps to `./src/*`
|
||||
|
||||
### Naming Conventions
|
||||
- **Components**: PascalCase (e.g., `UploadImage.tsx`)
|
||||
- **Files**: kebab-case for utilities (e.g., `api-fetch.ts`)
|
||||
- **Variables/Functions**: camelCase
|
||||
- **Constants**: UPPER_SNAKE_CASE
|
||||
- **Database Models**: PascalCase (Prisma convention)
|
||||
|
||||
### Error Handling
|
||||
- Use try-catch blocks for async operations
|
||||
- Implement proper error boundaries in React components
|
||||
- Log errors appropriately without exposing sensitive data
|
||||
- Use Zod for runtime validation and type safety
|
||||
|
||||
### API Structure
|
||||
- Backend uses Elysia.js with TypeScript
|
||||
- API routes are in `src/app/api/[[...slugs]]/` directory
|
||||
- Use treaty client for type-safe API calls
|
||||
- Follow RESTful conventions for endpoints
|
||||
- Include proper HTTP status codes and error responses
|
||||
|
||||
### Database Operations
|
||||
- Use Prisma client from `@/lib/prisma.ts`
|
||||
- Database connection includes graceful shutdown handling
|
||||
- Use transactions for complex operations
|
||||
- Implement proper error handling for database queries
|
||||
|
||||
### Component Guidelines
|
||||
- Use functional components with hooks
|
||||
- Implement proper prop types with TypeScript interfaces
|
||||
- Use Mantine components for UI consistency
|
||||
- Follow atomic design principles when possible
|
||||
- Add loading states and error states for async operations
|
||||
|
||||
### State Management
|
||||
- Use Jotai atoms for global state
|
||||
- Keep local state in components when possible
|
||||
- Use React Query (SWR) for server state caching
|
||||
- Implement optimistic updates for better UX
|
||||
|
||||
### Styling
|
||||
- Primary: Mantine UI components
|
||||
- Use Mantine theme system for customization
|
||||
- Custom CSS should be minimal and scoped
|
||||
- Follow responsive design principles
|
||||
- Use semantic HTML5 elements
|
||||
|
||||
### Environment Variables
|
||||
- Use `.env.local` for development
|
||||
- Prefix public variables with `NEXT_PUBLIC_`
|
||||
- Never commit environment files to version control
|
||||
- Use proper typing for environment variables
|
||||
|
||||
### File Organization
|
||||
```
|
||||
src/
|
||||
├── app/ # Next.js app router pages
|
||||
├── components/ # Reusable React components
|
||||
├── lib/ # Utility functions and configurations
|
||||
├── state/ # Jotai atoms and state management
|
||||
├── types/ # TypeScript type definitions
|
||||
└── con/ # Constants and static data
|
||||
```
|
||||
|
||||
### Security Practices
|
||||
- Validate all user inputs with Zod schemas
|
||||
- Use JWT tokens for authentication
|
||||
- Implement proper CORS configuration
|
||||
- Never expose database credentials or API keys
|
||||
- Use HTTPS in production
|
||||
- Implement rate limiting for sensitive endpoints
|
||||
|
||||
### Performance Considerations
|
||||
- Use Next.js Image optimization
|
||||
- Implement proper caching strategies
|
||||
- Use React.memo for expensive components
|
||||
- Optimize bundle size with dynamic imports
|
||||
- Use Prisma query optimization
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Always run type checking before committing: `npx tsc --noEmit`
|
||||
2. Run linting to catch style issues: `npx eslint .`
|
||||
3. Test database changes with `npx prisma db push`
|
||||
4. Use the integrated Swagger docs at `/api/docs` for API testing
|
||||
5. Check environment variables are properly configured
|
||||
6. Verify responsive design on different screen sizes
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The application uses a custom Elysia.js server integrated with Next.js API routes
|
||||
- Image uploads are handled through `/api/upl-img-single` endpoint
|
||||
- Database seeding is done with Bun runtime
|
||||
- The app supports Indonesian locale (id_ID) for SEO and content
|
||||
- CORS is configured to allow cross-origin requests during development
|
||||
219
QWEN.md
Normal file
219
QWEN.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# Desa Darmasaba - Village Management System
|
||||
|
||||
## Project Overview
|
||||
|
||||
Desa Darmasaba is a comprehensive Next.js 15 application designed for village management services in Badung, Bali. The platform serves as a digital hub for government services, public information, news, and community engagement for the residents of Darmasaba village.
|
||||
|
||||
### Key Technologies
|
||||
- **Framework**: Next.js 15 with App Router
|
||||
- **Language**: TypeScript with strict mode
|
||||
- **Styling**: Mantine UI components with custom CSS
|
||||
- **Backend**: Elysia.js API server integrated with Next.js
|
||||
- **Database**: PostgreSQL with Prisma ORM
|
||||
- **State Management**: Jotai for global state
|
||||
- **Authentication**: JWT with iron-session
|
||||
- **Runtime**: Bun (instead of Node.js)
|
||||
|
||||
### Architecture
|
||||
The application follows a modern full-stack architecture with:
|
||||
- Frontend built with Next.js 15 and TypeScript
|
||||
- Backend API endpoints using Elysia.js
|
||||
- PostgreSQL database managed with Prisma ORM
|
||||
- Mantine UI library for consistent design components
|
||||
- File storage system for managing images and documents
|
||||
- Comprehensive user authentication and authorization system
|
||||
|
||||
## Features
|
||||
|
||||
The application provides extensive functionality across multiple domains:
|
||||
|
||||
### Government Services
|
||||
- Public service information and requests
|
||||
- Administrative online services
|
||||
- Community announcements and news
|
||||
- Village profile and governance information
|
||||
|
||||
### Health Services
|
||||
- Healthcare facility information
|
||||
- Health programs and initiatives
|
||||
- Emergency health contacts
|
||||
- Health articles and education
|
||||
- Posyandu (community health posts) information
|
||||
|
||||
### Economic Development
|
||||
- Local market information
|
||||
- Job listings and employment opportunities
|
||||
- Village economic statistics
|
||||
- Business registration and support
|
||||
|
||||
### Innovation & Technology
|
||||
- Digital village initiatives
|
||||
- Technology adoption programs
|
||||
- Innovation proposal system
|
||||
- Smart village features
|
||||
|
||||
### Education
|
||||
- School information and statistics
|
||||
- Scholarship programs
|
||||
- Educational support services
|
||||
- Library and learning resources
|
||||
|
||||
### Environmental Management
|
||||
- Waste management systems
|
||||
- Green initiatives
|
||||
- Environmental conservation programs
|
||||
- Community participation activities
|
||||
|
||||
### Security & Safety
|
||||
- Emergency contacts
|
||||
- Police station information
|
||||
- Crime prevention measures
|
||||
- Community safety programs
|
||||
|
||||
## Building and Running
|
||||
|
||||
### Prerequisites
|
||||
- Bun runtime (version specified in package.json)
|
||||
- PostgreSQL database
|
||||
- Environment variables configured
|
||||
|
||||
### Setup Commands
|
||||
```bash
|
||||
# Install dependencies
|
||||
bun install
|
||||
|
||||
# Set up environment variables
|
||||
cp .env.example .env.local
|
||||
# Edit .env.local with your configuration
|
||||
|
||||
# Database setup
|
||||
bunx prisma db push
|
||||
bunx prisma generate
|
||||
|
||||
# Seed database (optional)
|
||||
bun run prisma/seed.ts
|
||||
|
||||
# Development mode
|
||||
bun run dev
|
||||
|
||||
# Production build
|
||||
bun run build
|
||||
|
||||
# Start production server
|
||||
bun run start
|
||||
```
|
||||
|
||||
### Additional Commands
|
||||
```bash
|
||||
# Linting (ESLint)
|
||||
bunx eslint .
|
||||
|
||||
# Type checking
|
||||
bunx tsc --noEmit
|
||||
|
||||
# Prisma operations
|
||||
bunx prisma generate
|
||||
bunx prisma db push
|
||||
bunx prisma studio
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── app/ # Next.js app router pages
|
||||
│ ├── _com/ # Common components
|
||||
│ ├── admin/ # Admin panel routes
|
||||
│ ├── api/ # API routes
|
||||
│ ├── darmasaba/ # Main application pages
|
||||
│ ├── login/ # Authentication pages
|
||||
│ └── ... # Other feature pages
|
||||
├── con/ # Constants and static data
|
||||
├── hooks/ # Custom React hooks
|
||||
├── lib/ # Utility functions and configurations
|
||||
├── middlewares/ # Middleware functions
|
||||
├── state/ # Global state management
|
||||
├── store/ # Additional state management
|
||||
├── types/ # TypeScript type definitions
|
||||
├── utils/ # Utility functions
|
||||
├── middleware.ts # Application middleware
|
||||
└── schema.ts # Schema definitions
|
||||
```
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
### Code Style
|
||||
- Use absolute imports with `@/` alias (configured in tsconfig.json)
|
||||
- Group imports: external libraries first, then internal modules
|
||||
- Follow consistent naming conventions:
|
||||
- Components: PascalCase (e.g., `UploadImage.tsx`)
|
||||
- Files: kebab-case for utilities (e.g., `api-fetch.ts`)
|
||||
- Variables/Functions: camelCase
|
||||
- Constants: UPPER_SNAKE_CASE
|
||||
|
||||
### TypeScript Configuration
|
||||
- Strict mode enabled (`"strict": true`)
|
||||
- Target: ES2017
|
||||
- Module resolution: bundler
|
||||
- Path alias: `@/*` maps to `./src/*`
|
||||
|
||||
### Error Handling
|
||||
- Use try-catch blocks for async operations
|
||||
- Implement proper error boundaries in React components
|
||||
- Log errors appropriately without exposing sensitive data
|
||||
- Use Zod for runtime validation and type safety
|
||||
|
||||
### Security Practices
|
||||
- Validate all user inputs with Zod schemas
|
||||
- Use JWT tokens for authentication
|
||||
- Implement proper CORS configuration
|
||||
- Never expose database credentials or API keys
|
||||
- Use HTTPS in production
|
||||
- Implement rate limiting for sensitive endpoints
|
||||
|
||||
### Performance Considerations
|
||||
- Use Next.js Image optimization
|
||||
- Implement proper caching strategies
|
||||
- Use React.memo for expensive components
|
||||
- Optimize bundle size with dynamic imports
|
||||
- Use Prisma query optimization
|
||||
|
||||
## Database Schema
|
||||
|
||||
The application uses a comprehensive PostgreSQL database schema with Prisma ORM, featuring:
|
||||
|
||||
- **User Management**: Complete user authentication system with roles and permissions
|
||||
- **Content Management**: News, announcements, and various content types
|
||||
- **Service Management**: Various government and community services
|
||||
- **File Storage**: Centralized file management system
|
||||
- **Health Information**: Healthcare facilities and programs
|
||||
- **Economic Data**: Market information and employment data
|
||||
- **Educational Resources**: Schools, scholarships, and educational programs
|
||||
- **Environmental Data**: Sustainability and environmental management
|
||||
- **Security Information**: Emergency contacts and safety measures
|
||||
|
||||
## API Structure
|
||||
|
||||
- Backend uses Elysia.js with TypeScript
|
||||
- API routes are in `src/app/api/[[...slugs]]/` directory
|
||||
- Use treaty client for type-safe API calls
|
||||
- Follow RESTful conventions for endpoints
|
||||
- Include proper HTTP status codes and error responses
|
||||
|
||||
## Deployment
|
||||
|
||||
The application includes deployment scripts for staging environments, with:
|
||||
- Automated builds using Bun
|
||||
- Database migration handling
|
||||
- Environment-specific configurations
|
||||
- PM2 process management for production
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The application uses a custom Elysia.js server integrated with Next.js API routes
|
||||
- Image uploads are handled through `/api/upl-img-single` endpoint
|
||||
- Database seeding is done with Bun runtime
|
||||
- The app supports Indonesian locale (id_ID) for SEO and content
|
||||
- CORS is configured to allow cross-origin requests during development
|
||||
- Authentication is implemented with JWT tokens and iron-session
|
||||
- The application has both public-facing and admin sections with different access controls
|
||||
99
gambar.ttx
Normal file
99
gambar.ttx
Normal file
@@ -0,0 +1,99 @@
|
||||
type DirItem = {
|
||||
type: "file" | "dir";
|
||||
name: string;
|
||||
path: string;
|
||||
size?: number;
|
||||
};
|
||||
|
||||
// type FileDownloadResponse = {
|
||||
// url: string;
|
||||
// };
|
||||
|
||||
// const TOKEN = "20a19f4a04032215d50ce53292e6abdd38b9f806";
|
||||
// const REPO_ID = "8814bfe1-30d5-4e77-ab36-3122fa59a022";
|
||||
// const DIR_TARGET = "image";
|
||||
|
||||
// const BASE_URL = "https://cld-dkr-makuro-seafile.wibudev.com/api2";
|
||||
|
||||
const TOKEN = process.env.SEAFILE_TOKEN!;
|
||||
const REPO_ID = process.env.SEAFILE_REPO_ID!;
|
||||
|
||||
// ⛔ PENTING: RELATIVE PATH (tanpa slash depan)
|
||||
const DIR_TARGET = "asset-web";
|
||||
|
||||
const BASE_URL = "https://cld-dkr-makuro-seafile.wibudev.com/api2";
|
||||
|
||||
const headers = {
|
||||
Authorization: `Token ${TOKEN}`,
|
||||
};
|
||||
|
||||
/**
|
||||
* Ambil list file di directory
|
||||
*/
|
||||
async function getDirItems(): Promise<DirItem[]> {
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/repos/${REPO_ID}/dir/?p=${DIR_TARGET}`,
|
||||
{ headers }
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`Failed get dir items: ${res.statusText}`);
|
||||
}
|
||||
|
||||
return res.json();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ambil download URL file
|
||||
*/
|
||||
async function getDownloadUrl(filePath: string): Promise<string> {
|
||||
|
||||
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/repos/${REPO_ID}/file/?p=${encodeURIComponent(filePath)}`,
|
||||
{ headers }
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`Failed get file url: ${res.statusText}`);
|
||||
}
|
||||
|
||||
const data = await res.json();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ambil semua download URL dari target dir
|
||||
*/
|
||||
async function getAllDownloadUrls() {
|
||||
const items = await getDirItems();
|
||||
|
||||
const files = items.filter((item) => item.type === "file");
|
||||
|
||||
const results = await Promise.all(
|
||||
files.map(async (file) => {
|
||||
const filePath = `${DIR_TARGET}/${file.name}`;
|
||||
const url = await getDownloadUrl(filePath);
|
||||
return {
|
||||
name: file.name,
|
||||
path: filePath,
|
||||
downloadUrl: url,
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
// contoh eksekusi
|
||||
(async () => {
|
||||
try {
|
||||
console.log("ambil gambar")
|
||||
const urls = await getAllDownloadUrls();
|
||||
await Bun.write("list_image2.json", JSON.stringify(urls))
|
||||
console.log("selesai !")
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
})();
|
||||
@@ -45,6 +45,7 @@
|
||||
"@types/bun": "^1.2.2",
|
||||
"@types/leaflet": "^1.9.20",
|
||||
"@types/lodash": "^4.17.16",
|
||||
"@types/mime-types": "^3.0.1",
|
||||
"@types/nodemailer": "^7.0.2",
|
||||
"add": "^2.0.6",
|
||||
"adm-zip": "^0.5.16",
|
||||
@@ -53,6 +54,7 @@
|
||||
"bun": "^1.2.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"classnames": "^2.5.1",
|
||||
"cli-progress": "^3.12.0",
|
||||
"colors": "^1.4.0",
|
||||
"date-fns": "^4.1.0",
|
||||
"dayjs": "^1.11.13",
|
||||
@@ -72,6 +74,7 @@
|
||||
"leaflet": "^1.9.4",
|
||||
"list": "^2.0.19",
|
||||
"lodash": "^4.17.21",
|
||||
"mime-types": "^3.0.2",
|
||||
"motion": "^12.4.1",
|
||||
"nanoid": "^5.1.5",
|
||||
"next": "^15.5.2",
|
||||
@@ -102,6 +105,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3",
|
||||
"@types/cli-progress": "^3.11.6",
|
||||
"@types/jsonwebtoken": "^9.0.10",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
|
||||
71
prisma/_seeder_list/desa/berita/seed_berita.ts
Normal file
71
prisma/_seeder_list/desa/berita/seed_berita.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import kategoriBerita from "../../../data/desa/berita/kategori-berita.json";
|
||||
import beritaJson from "../../../data/desa/berita/berita.json";
|
||||
|
||||
export async function seedBerita() {
|
||||
// ================== SUBMENU BERITA ========================
|
||||
console.log("🔄 Seeding Kategori Berita...");
|
||||
for (const k of kategoriBerita) {
|
||||
await prisma.kategoriBerita.upsert({
|
||||
where: {
|
||||
name: k.name, // ✅ cocok dengan @unique
|
||||
},
|
||||
update: {
|
||||
name: k.name,
|
||||
isActive: true,
|
||||
},
|
||||
create: {
|
||||
id: k.id, // ✅ id tetap bisa disimpan
|
||||
name: k.name,
|
||||
isActive: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("kategori berita success ...");
|
||||
|
||||
console.log("🔄 Seeding Berita...");
|
||||
|
||||
for (const b of beritaJson) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (b.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: b.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for berita "${b.judul}": ${b.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.berita.upsert({
|
||||
where: { id: b.id },
|
||||
update: {
|
||||
judul: b.judul,
|
||||
deskripsi: b.deskripsi,
|
||||
content: b.content,
|
||||
kategoriBeritaId: b.kategoriBeritaId,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: b.id,
|
||||
judul: b.judul,
|
||||
deskripsi: b.deskripsi,
|
||||
content: b.content,
|
||||
kategoriBeritaId: b.kategoriBeritaId,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`✅ Berita seeded: ${b.judul}`);
|
||||
}
|
||||
|
||||
console.log("🎉 Berita seed selesai");
|
||||
}
|
||||
|
||||
40
prisma/_seeder_list/desa/gallery/foto/seed_foto.ts
Normal file
40
prisma/_seeder_list/desa/gallery/foto/seed_foto.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import foto from "../../../../data/desa/gallery/foto/foto.json";
|
||||
|
||||
export async function seedFoto() {
|
||||
console.log("🔄 Seeding Foto...");
|
||||
for (const f of foto) {
|
||||
let imagesId: string | null = null;
|
||||
|
||||
if (f.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: f.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for foto "${f.name}": ${f.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imagesId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.galleryFoto.upsert({
|
||||
where: { id: f.id },
|
||||
update: {
|
||||
name: f.name,
|
||||
deskripsi: f.deskripsi,
|
||||
imagesId,
|
||||
},
|
||||
create: {
|
||||
id: f.id,
|
||||
name: f.name,
|
||||
deskripsi: f.deskripsi,
|
||||
imagesId,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("✅ Foto seeding completed");
|
||||
}
|
||||
25
prisma/_seeder_list/desa/gallery/video/seed_video.ts
Normal file
25
prisma/_seeder_list/desa/gallery/video/seed_video.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import galleryVideo from "../../../../data/desa/gallery/video/video.json";
|
||||
|
||||
export async function seedVideo() {
|
||||
console.log("🔄 Seeding Gallery Video...");
|
||||
for (const v of galleryVideo) {
|
||||
await prisma.galleryVideo.upsert({
|
||||
where: {
|
||||
id: v.id,
|
||||
},
|
||||
update: {
|
||||
name: v.judul,
|
||||
deskripsi: v.deskripsi,
|
||||
linkVideo: v.linkVideo,
|
||||
},
|
||||
create: {
|
||||
name: v.judul,
|
||||
deskripsi: v.deskripsi,
|
||||
linkVideo: v.linkVideo,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("gallery video success ...");
|
||||
}
|
||||
128
prisma/_seeder_list/desa/layanan/seed_layanan.ts
Normal file
128
prisma/_seeder_list/desa/layanan/seed_layanan.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import pelayananSuratKeterangan from "../../../data/desa/layanan/pelayananSuratKeterangan.json";
|
||||
import pelayananTelunjukSaktiDesa from "../../../data/desa/layanan/pelayananTelunjukSaktiDesa.json";
|
||||
import pelayananPerizinanBerusaha from "../../../data/desa/layanan/pelayananPerizinanBerusaha.json";
|
||||
import pelayananPendudukNonPermanen from "../../../data/desa/layanan/pelayananPendudukNonPermanen.json";
|
||||
|
||||
export async function seedLayanan() {
|
||||
console.log("🔄 Seeding Pelayanan Surat Keterangan...");
|
||||
|
||||
for (const p of pelayananSuratKeterangan) {
|
||||
const existing = await prisma.pelayananSuratKeterangan.findUnique({
|
||||
where: { id: p.id },
|
||||
select: { imageId: true, image2Id: true }, // 📌 tambahkan image2Id
|
||||
});
|
||||
|
||||
// 1️⃣ Handle imageId
|
||||
let imageId = existing?.imageId ?? null;
|
||||
|
||||
if (p.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: p.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for pelayanan surat keterangan 1 "${p.name}": ${p.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
// 2️⃣ Handle image2Id
|
||||
let image2Id = existing?.image2Id ?? null;
|
||||
|
||||
if (p.image2Name) {
|
||||
const image2 = await prisma.fileStorage.findUnique({
|
||||
where: { name: p.image2Name },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image2) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for pelayanan surat keterangan 2 "${p.name}": ${p.image2Name}`,
|
||||
);
|
||||
} else {
|
||||
image2Id = image2.id;
|
||||
}
|
||||
}
|
||||
|
||||
// 3️⃣ Upsert dengan kedua image
|
||||
await prisma.pelayananSuratKeterangan.upsert({
|
||||
where: { id: p.id },
|
||||
update: {
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
imageId,
|
||||
image2Id, // 📌 tambahkan ini
|
||||
},
|
||||
create: {
|
||||
id: p.id,
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
imageId,
|
||||
image2Id, // 📌 tambahkan ini
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("✅ Pelayanan Surat Keterangan success...");
|
||||
|
||||
for (const p of pelayananTelunjukSaktiDesa) {
|
||||
await prisma.pelayananTelunjukSaktiDesa.upsert({
|
||||
where: { id: p.id },
|
||||
update: {
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
link: p.link,
|
||||
},
|
||||
create: {
|
||||
id: p.id,
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
link: p.link,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("pelayanan telunjuk sakti desa success ...");
|
||||
|
||||
for (const l of pelayananPerizinanBerusaha) {
|
||||
await prisma.pelayananPerizinanBerusaha.upsert({
|
||||
where: {
|
||||
id: l.id,
|
||||
},
|
||||
update: {
|
||||
name: l.name,
|
||||
deskripsi: l.deskripsi,
|
||||
link: l.link,
|
||||
},
|
||||
create: {
|
||||
id: l.id,
|
||||
name: l.name,
|
||||
deskripsi: l.deskripsi,
|
||||
link: l.link,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("pelayanan perizinan berusaha success ...");
|
||||
|
||||
for (const l of pelayananPendudukNonPermanen) {
|
||||
await prisma.pelayananPendudukNonPermanen.upsert({
|
||||
where: {
|
||||
id: l.id,
|
||||
},
|
||||
update: {
|
||||
name: l.name,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
create: {
|
||||
id: l.id,
|
||||
name: l.name,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("pelayanan penduduk non permanen success ...");
|
||||
}
|
||||
44
prisma/_seeder_list/desa/penghargaan/penghargaan.ts
Normal file
44
prisma/_seeder_list/desa/penghargaan/penghargaan.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import penghargaan from "../../../data/desa/penghargaan/penghargaan.json"
|
||||
|
||||
export async function seedPenghargaan() {
|
||||
console.log("🔄 Seeding Penghargaan...");
|
||||
for (const m of penghargaan) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for penghargaan "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.penghargaan.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
juara: m.juara,
|
||||
deskripsi: m.deskripsi,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
juara: m.juara,
|
||||
deskripsi: m.deskripsi,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("penghargaan success ...");
|
||||
}
|
||||
|
||||
43
prisma/_seeder_list/desa/pengumuman/seed_pengumuman.ts
Normal file
43
prisma/_seeder_list/desa/pengumuman/seed_pengumuman.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { safeSeedUnique } from "../../../safeseedUnique";
|
||||
import kategoriPengumuman from "../../../data/desa/pengumuman/kategori-pengumuman.json";
|
||||
import pengumuman from "../../../data/desa/pengumuman/pengumuman.json";
|
||||
|
||||
export async function seedPengumuman() {
|
||||
console.log("🔄 Seeding Kategori Pengumuman...");
|
||||
for (const c of kategoriPengumuman) {
|
||||
await safeSeedUnique(
|
||||
"categoryPengumuman",
|
||||
{ name: c.name }, // ✅ where clause
|
||||
{
|
||||
id: c.id,
|
||||
name: c.name,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
console.log("kategori pengumuman success ...");
|
||||
|
||||
console.log("🔄 Seeding Pengumuman...");
|
||||
for (const p of pengumuman) {
|
||||
await prisma.pengumuman.upsert({
|
||||
where: {
|
||||
id: p.id,
|
||||
},
|
||||
update: {
|
||||
judul: p.judul,
|
||||
deskripsi: p.deskripsi,
|
||||
content: p.content,
|
||||
categoryPengumumanId: p.categoryPengumumanId,
|
||||
},
|
||||
create: {
|
||||
judul: p.judul,
|
||||
deskripsi: p.deskripsi,
|
||||
content: p.content,
|
||||
categoryPengumumanId: p.categoryPengumumanId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("pengumuman success ...");
|
||||
}
|
||||
64
prisma/_seeder_list/desa/potensi/seed_potensi.ts
Normal file
64
prisma/_seeder_list/desa/potensi/seed_potensi.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import kategoriPotensi from "../../../data/desa/potensi/kategori-potensi.json";
|
||||
import potensiDesa from "../../../data/desa/potensi/potensi-desa.json";
|
||||
|
||||
export async function seedPotensi() {
|
||||
console.log("🔄Seeding Kategori Potensi Desa ...");
|
||||
for (const c of kategoriPotensi) {
|
||||
await prisma.kategoriPotensi.upsert({
|
||||
where: {
|
||||
id: c.id,
|
||||
},
|
||||
update: {
|
||||
nama: c.nama,
|
||||
},
|
||||
create: {
|
||||
id: c.id,
|
||||
nama: c.nama,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("kategori Potensi success ...");
|
||||
|
||||
console.log("🔄 Seeding Potensi Desa...");
|
||||
for (const m of potensiDesa) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for potensi desa "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.potensiDesa.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
deskripsi: m.deskripsi,
|
||||
content: m.content,
|
||||
kategoriId: m.kategoriId,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
deskripsi: m.deskripsi,
|
||||
content: m.content,
|
||||
kategoriId: m.kategoriId,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("potensi desa success ...");
|
||||
}
|
||||
147
prisma/_seeder_list/desa/profile-desa/seed_profile_desa.ts
Normal file
147
prisma/_seeder_list/desa/profile-desa/seed_profile_desa.ts
Normal file
@@ -0,0 +1,147 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import lambangDesa from "../../../data/desa/profile/lambang_desa.json";
|
||||
import maskotDesa from "../../../data/desa/profile/maskot_desa.json";
|
||||
import profilePerbekel from "../../../data/desa/profile/profil_perbekel.json";
|
||||
import profileDesaImage from "../../../data/desa/profile/profileDesaImage.json";
|
||||
import sejarahDesa from "../../../data/desa/profile/sejarah_desa.json";
|
||||
|
||||
export async function seedProfileDesa() {
|
||||
// =========== SEJARAH DESA ===========
|
||||
for (const l of sejarahDesa) {
|
||||
await prisma.sejarahDesa.upsert({
|
||||
where: {
|
||||
id: l.id,
|
||||
},
|
||||
update: {
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
create: {
|
||||
id: l.id,
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("sejarah desa success ...");
|
||||
|
||||
// =========== MASKOT DESA ===========
|
||||
for (const l of maskotDesa) {
|
||||
await prisma.maskotDesa.upsert({
|
||||
where: {
|
||||
id: l.id,
|
||||
},
|
||||
update: {
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
create: {
|
||||
id: l.id,
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("maskot desa success ...");
|
||||
|
||||
console.log("🔄 Seeding Profile Desa Image...");
|
||||
for (const m of profileDesaImage) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for profile desa image "${m.label}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.profileDesaImage.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
label: m.label,
|
||||
maskotDesaId: m.maskotDesaId,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
label: m.label,
|
||||
maskotDesaId: m.maskotDesaId,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("profile desa image success ...");
|
||||
|
||||
// =========== LAMBANG DESA ===========
|
||||
for (const l of lambangDesa) {
|
||||
await prisma.lambangDesa.upsert({
|
||||
where: {
|
||||
id: l.id,
|
||||
},
|
||||
update: {
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
create: {
|
||||
id: l.id,
|
||||
judul: l.judul,
|
||||
deskripsi: l.deskripsi,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("lambang desa success ...");
|
||||
|
||||
// =========== PROFILE PERBEKEL PROFILE DESA ===========
|
||||
console.log("🔄 Seeding Profile Perbekel...");
|
||||
for (const m of profilePerbekel) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for profile perbekel "${m.biodata}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.profilPerbekel.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
biodata: m.biodata,
|
||||
pengalaman: m.pengalaman,
|
||||
pengalamanOrganisasi: m.pengalamanOrganisasi,
|
||||
programUnggulan: m.programUnggulan,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
biodata: m.biodata,
|
||||
pengalaman: m.pengalaman,
|
||||
pengalamanOrganisasi: m.pengalamanOrganisasi,
|
||||
programUnggulan: m.programUnggulan,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("profile perbekel desa success ...");
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import perbekelDariMasaKeMasa from "../../../data/desa/profile/profile-perbekel-lalu.json";
|
||||
|
||||
export async function seedProfilePerbekel() {
|
||||
console.log("🔄 Seeding Perbekel Dari Masa Ke Masa...");
|
||||
for (const p of perbekelDariMasaKeMasa) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (p.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: p.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for Perbekel Dari Masa Ke Masa "${p.nama}": ${p.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.perbekelDariMasaKeMasa.upsert({
|
||||
where: { id: p.id },
|
||||
update: {
|
||||
nama: p.nama,
|
||||
periode: p.periode,
|
||||
daerah: p.daerah,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: p.id,
|
||||
nama: p.nama,
|
||||
periode: p.periode,
|
||||
daerah: p.daerah,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("✅ Pejabat Desa seeding completed");
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import kategoriDesaAntiKorupsi from "../../../data/landing-page/desa-anti-korupsi/kategoriDesaAntiKorupsi.json"
|
||||
import desaAntiKorupsi from "../../../data/landing-page/desa-anti-korupsi/desaantiKorpusi.json"
|
||||
|
||||
export async function seedDesaAntiKorupsi() {
|
||||
for (const k of kategoriDesaAntiKorupsi) {
|
||||
await prisma.kategoriDesaAntiKorupsi.upsert({
|
||||
where: { id: k.id },
|
||||
update: {
|
||||
name: k.name,
|
||||
},
|
||||
create: {
|
||||
id: k.id,
|
||||
name: k.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("kategori desa anti korupsi success ...");
|
||||
|
||||
// =========== DESA ANTI KORUPSI ===========
|
||||
for (const p of desaAntiKorupsi) {
|
||||
await prisma.desaAntiKorupsi.upsert({
|
||||
where: { id: p.id },
|
||||
update: {
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
kategoriId: p.kategoriId,
|
||||
},
|
||||
create: {
|
||||
id: p.id,
|
||||
name: p.name,
|
||||
deskripsi: p.deskripsi,
|
||||
kategoriId: p.kategoriId,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("desa anti korupsi success ...");
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import prestasiDesa from "../../../data/landing-page/prestasi-desa/prestasi-desa.json"
|
||||
import kategoriPrestasiDesa from "../../../data/landing-page/prestasi-desa/kategori-prestasi.json"
|
||||
|
||||
export async function seedPrestasiDesa() {
|
||||
|
||||
console.log("🔄 Seeding Kategori Prestasi Desa...");
|
||||
for (const c of kategoriPrestasiDesa) {
|
||||
await prisma.kategoriPrestasiDesa.upsert({
|
||||
where: { id: c.id },
|
||||
update: {
|
||||
name: c.name,
|
||||
},
|
||||
create: {
|
||||
id: c.id,
|
||||
name: c.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("kategori prestasi desa success ...");
|
||||
|
||||
console.log("🔄 Seeding Prestasi Desa...");
|
||||
for (const m of prestasiDesa) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for prestasi desa "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.prestasiDesa.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
deskripsi: m.deskripsi,
|
||||
kategoriId: m.kategoriId,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
deskripsi: m.deskripsi,
|
||||
kategoriId: m.kategoriId,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("prestasi desa success ...");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import mediaSosial from "../../../data/landing-page/profile/mediaSosial.json"
|
||||
|
||||
export async function seedMediaSosial() {
|
||||
console.log("🔄 Seeding Media Sosial...");
|
||||
for (const m of mediaSosial) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for berita "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.mediaSosial.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
iconUrl: m.iconUrl,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
iconUrl: m.iconUrl,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("media sosial success ...");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import profilePejabatDesa from "../../../data/landing-page/profile/profile.json";
|
||||
|
||||
export async function seedProfileLP() {
|
||||
console.log("🔄 Seeding Pejabat Desa...");
|
||||
for (const p of profilePejabatDesa) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (p.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: p.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for profile "${p.name}": ${p.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.pejabatDesa.upsert({
|
||||
where: { id: p.id },
|
||||
update: {
|
||||
name: p.name,
|
||||
position: p.position,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: p.id,
|
||||
name: p.name,
|
||||
position: p.position,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("✅ Pejabat Desa seeding completed");
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import programInovasi from "../../../data/landing-page/profile/programInovasi.json";
|
||||
|
||||
export async function seedProgramInovasi() {
|
||||
console.log("🔄 Seeding Program Inovasi...");
|
||||
|
||||
for (const b of programInovasi) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (b.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: b.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for program inovasi "${b.name}": ${b.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.programInovasi.upsert({
|
||||
where: { id: b.id },
|
||||
update: {
|
||||
name: b.name,
|
||||
description: b.description,
|
||||
link: b.link,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: b.id,
|
||||
name: b.name,
|
||||
description: b.description,
|
||||
link: b.link,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`✅ Program Inovasi seeded: ${b.name}`);
|
||||
}
|
||||
}
|
||||
41
prisma/_seeder_list/landing-page/sdgs/seed_sdgs.ts
Normal file
41
prisma/_seeder_list/landing-page/sdgs/seed_sdgs.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import sdgsDesa from "../../../data/landing-page/sdgs-desa/sdgs-desa.json";
|
||||
|
||||
export async function seedSDGSDesa() {
|
||||
console.log("🔄 Seeding SDGS Desa...");
|
||||
for (const m of sdgsDesa) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for sdgs desa "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.sdgsDesa.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
jumlah: m.jumlah,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
jumlah: m.jumlah,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("sdgs desa success ...");
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import daftarInformasiPublik from "../../../data/ppid/daftar-informasi-publik-desa-darmasaba/daftarInformasi.json"
|
||||
import jenisInformasiDiminta from "../../../data/list-jenisInfromasi.json"
|
||||
import caraMemperolehInformasi from "../../../data/list-caraMemperolehInformasi.json"
|
||||
import caraMemperolehSalinanInformasi from "../../../data/list-caraMemperolehSalinanInformasi.json"
|
||||
|
||||
export async function seedDaftarInformasiPublikPpid() {
|
||||
|
||||
for (const v of daftarInformasiPublik) {
|
||||
// Convert string date to Date object
|
||||
const tanggal = new Date(v.tanggal);
|
||||
|
||||
await prisma.daftarInformasiPublik.upsert({
|
||||
where: {
|
||||
id: v.id,
|
||||
},
|
||||
update: {
|
||||
jenisInformasi: v.jenisInformasi,
|
||||
deskripsi: v.deskripsi,
|
||||
tanggal: tanggal,
|
||||
},
|
||||
create: {
|
||||
id: v.id,
|
||||
jenisInformasi: v.jenisInformasi,
|
||||
deskripsi: v.deskripsi,
|
||||
tanggal: tanggal,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("daftar informasi publik PPID success ...");
|
||||
|
||||
for (const j of jenisInformasiDiminta) {
|
||||
await prisma.jenisInformasiDiminta.upsert({
|
||||
where: {
|
||||
name: j.name,
|
||||
},
|
||||
update: {
|
||||
name: j.name,
|
||||
},
|
||||
create: {
|
||||
name: j.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("jenis informasi diminta success ...");
|
||||
|
||||
for (const c of caraMemperolehInformasi) {
|
||||
await prisma.caraMemperolehInformasi.upsert({
|
||||
where: {
|
||||
name: c.name,
|
||||
},
|
||||
update: {
|
||||
name: c.name,
|
||||
},
|
||||
create: {
|
||||
name: c.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("cara memperoleh informasi success ...");
|
||||
|
||||
for (const c of caraMemperolehSalinanInformasi) {
|
||||
await prisma.caraMemperolehSalinanInformasi.upsert({
|
||||
where: {
|
||||
name: c.name,
|
||||
},
|
||||
update: {
|
||||
name: c.name,
|
||||
},
|
||||
create: {
|
||||
name: c.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("cara memperoleh salinan informasi success ...");
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import dasarHukumPPID from "../../../data/ppid/dasar-hukum-ppid/dasarhukumPPID.json"
|
||||
|
||||
export async function seedDasarHukumPpid() {
|
||||
for (const v of dasarHukumPPID) {
|
||||
await prisma.dasarHukumPPID.upsert({
|
||||
where: {
|
||||
id: v.id,
|
||||
},
|
||||
update: {
|
||||
judul: v.judul,
|
||||
content: v.content,
|
||||
},
|
||||
create: {
|
||||
id: v.id,
|
||||
judul: v.judul,
|
||||
content: v.content,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("dasar hukum PPID success ...");
|
||||
}
|
||||
54
prisma/_seeder_list/ppid/ikm/seed_ikm.ts
Normal file
54
prisma/_seeder_list/ppid/ikm/seed_ikm.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import jenisKelamin from "../../../data/ppid/ikm/jenis-kelamin/jenis-kelamin.json";
|
||||
import pilihanRatingResponden from "../../../data/ppid/ikm/pilihan-rating-responden/rating-responden.json";
|
||||
import umurResponden from "../../../data/ppid/ikm/umur-responden/umur-responden.json";
|
||||
|
||||
export async function seedIkmPpid() {
|
||||
for (const j of jenisKelamin) {
|
||||
await prisma.jenisKelaminResponden.upsert({
|
||||
where: {
|
||||
id: j.id,
|
||||
},
|
||||
update: {
|
||||
name: j.name,
|
||||
},
|
||||
create: {
|
||||
id: j.id,
|
||||
name: j.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("jenis kelamin responden success ...");
|
||||
|
||||
for (const r of pilihanRatingResponden) {
|
||||
await prisma.pilihanRatingResponden.upsert({
|
||||
where: {
|
||||
id: r.id,
|
||||
},
|
||||
update: {
|
||||
name: r.name,
|
||||
},
|
||||
create: {
|
||||
id: r.id,
|
||||
name: r.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("pilihan rating responden success ...");
|
||||
|
||||
for (const u of umurResponden) {
|
||||
await prisma.umurResponden.upsert({
|
||||
where: {
|
||||
id: u.id,
|
||||
},
|
||||
update: {
|
||||
name: u.name,
|
||||
},
|
||||
create: {
|
||||
id: u.id,
|
||||
name: u.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("umur responden success ...");
|
||||
}
|
||||
48
prisma/_seeder_list/ppid/profil-ppid/seed_profil_ppd.ts
Normal file
48
prisma/_seeder_list/ppid/profil-ppid/seed_profil_ppd.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import profilPpd from "../../../data/ppid/profile-ppid/profilePPid.json"
|
||||
|
||||
export async function seedProfilPpd() {
|
||||
console.log("🔄 Seeding Profil PPD...");
|
||||
for (const m of profilPpd) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for berita "${m.name}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.profilePPID.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
name: m.name,
|
||||
biodata: m.biodata,
|
||||
riwayat: m.riwayat,
|
||||
pengalaman: m.pengalaman,
|
||||
unggulan: m.unggulan,
|
||||
imageId,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
name: m.name,
|
||||
biodata: m.biodata,
|
||||
riwayat: m.riwayat,
|
||||
pengalaman: m.pengalaman,
|
||||
unggulan: m.unggulan,
|
||||
imageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("profil ppd success ...");
|
||||
}
|
||||
|
||||
82
prisma/_seeder_list/ppid/struktur-ppid/seed_struktur_ppid.ts
Normal file
82
prisma/_seeder_list/ppid/struktur-ppid/seed_struktur_ppid.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import pegawaiPpid from "../../../data/ppid/struktur-ppid/pegawai-PPID.json"
|
||||
import posisiOrganisasiPPID from "../../../data/ppid/struktur-ppid/posisi-organisasi-PPID.json"
|
||||
|
||||
export async function seedPegawaiPpid() {
|
||||
|
||||
const flattenedPosisi = posisiOrganisasiPPID.flat();
|
||||
|
||||
// ✅ Urutkan berdasarkan hierarki
|
||||
const sortedPosisi = flattenedPosisi.sort((a, b) => a.hierarki - b.hierarki);
|
||||
|
||||
for (const p of sortedPosisi) {
|
||||
console.log(`Seeding: ${p.nama} (id: ${p.id}, parent: ${p.parentId})`);
|
||||
|
||||
if (p.parentId) {
|
||||
const parentExists = flattenedPosisi.some((pos) => pos.id === p.parentId);
|
||||
if (!parentExists) {
|
||||
console.warn(
|
||||
`⚠️ Parent tidak ditemukan: ${p.parentId} untuk ${p.nama}`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.posisiOrganisasiPPID.upsert({
|
||||
where: { id: p.id },
|
||||
update: p,
|
||||
create: p,
|
||||
});
|
||||
}
|
||||
console.log("posisi organisasi berhasil");
|
||||
|
||||
console.log("🔄 Seeding Struktur Ppid...");
|
||||
for (const m of pegawaiPpid) {
|
||||
let imageId: string | null = null;
|
||||
|
||||
if (m.imageName) {
|
||||
const image = await prisma.fileStorage.findUnique({
|
||||
where: { name: m.imageName },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
if (!image) {
|
||||
console.warn(
|
||||
`⚠️ Image not found for pegawai ppid "${m.namaLengkap}": ${m.imageName}`,
|
||||
);
|
||||
} else {
|
||||
imageId = image.id;
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.pegawaiPPID.upsert({
|
||||
where: { id: m.id },
|
||||
update: {
|
||||
namaLengkap: m.namaLengkap,
|
||||
gelarAkademik: m.gelarAkademik,
|
||||
tanggalMasuk: m.tanggalMasuk,
|
||||
email: m.email,
|
||||
telepon: m.telepon,
|
||||
alamat: m.alamat,
|
||||
imageId,
|
||||
posisiId: m.posisiId,
|
||||
isActive: m.isActive,
|
||||
},
|
||||
create: {
|
||||
id: m.id,
|
||||
namaLengkap: m.namaLengkap,
|
||||
gelarAkademik: m.gelarAkademik,
|
||||
tanggalMasuk: m.tanggalMasuk,
|
||||
email: m.email,
|
||||
telepon: m.telepon,
|
||||
alamat: m.alamat,
|
||||
imageId,
|
||||
posisiId: m.posisiId,
|
||||
isActive: m.isActive,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log("struktur ppid success ...");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import visiMisiPPID from "../../../data/ppid/visi-misi-ppid/visimisiPPID.json"
|
||||
|
||||
export async function seedVisiMisiPpid() {
|
||||
for (const v of visiMisiPPID) {
|
||||
await prisma.visiMisiPPID.upsert({
|
||||
where: {
|
||||
id: v.id,
|
||||
},
|
||||
update: {
|
||||
misi: v.misi,
|
||||
visi: v.visi,
|
||||
},
|
||||
create: {
|
||||
id: v.id,
|
||||
misi: v.misi,
|
||||
visi: v.visi,
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("visi misi PPID success ...");
|
||||
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
"deskripsi": "<p>Kegiatan pembinaan dan bantuan kepada kader Posyandu Desa Darmasaba oleh TP Posyandu Provinsi Bali.</p>",
|
||||
"content": "<p>Sebanyak 50 kader posyandu mendapatkan pembinaan dan sembako sebagai dukungan terhadap peran Posyandu dalam pemberdayaan masyarakat. Kegiatan ini menunjukkan peran strategis posyandu dalam layanan publik desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000vvnv8xeouenv5",
|
||||
"imageId": "cmk6bk2va0003vnadn9w0mxc4"
|
||||
"imageName": "Wp41ccw3yma9W8i6zBr6E-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6af7vf00013b6rj2br4nv8",
|
||||
@@ -13,7 +13,7 @@
|
||||
"deskripsi": "<p>Temu Sadar Hukum untuk meningkatkan kesadaran hukum warga Desa Darmasaba.</p>",
|
||||
"content": "<p>Kegiatan ini membahas isu kekerasan dalam rumah tangga dengan narasumber dari Kanwil Kemenkum Bali, menjadi forum penting dalam membangun masyarakat yang melek hukum.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000vvnv8xeouenv5",
|
||||
"imageId": "cmk6bo3290006vnadzhgalacy"
|
||||
"imageName": "IwedNmhjD_wGpY6PvYX7W-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6afo0g00033b6rjc2pae67",
|
||||
@@ -21,7 +21,7 @@
|
||||
"deskripsi": "<p>Ruang dialog terbuka di Desa Darmasaba untuk membahas persoalan sampah dan partisipasi publik.</p>",
|
||||
"content": "<p>Forum dialog ini membantu pemerintahan desa menyusun kebijakan tepat sasaran, terutama terkait permasalahan lingkungan dan aspirasi warga.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000vvnv8xeouenv5",
|
||||
"imageId": "cmk6bptid0009vnad6my1w4s1"
|
||||
"imageName": "EVkMxPdoWyL3y31L7d7x1-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6ag56y00053b6rj9481z6m",
|
||||
@@ -29,7 +29,7 @@
|
||||
"deskripsi": "<p>Diskusi terbuka antara pemerintah desa dan warga mengenai isu sampah.</p>",
|
||||
"content": "<p>Acara ini mendukung perumusan kebijakan desa yang sesuai kebutuhan warga dan meningkatkan partisipasi dalam pembangunan lingkungan.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000tvnv8g2d206wv",
|
||||
"imageId": "cmk6c86dc000cvnadlh54q7xr"
|
||||
"imageName": "c_5xOKUbMiD8dTAbkAv9a-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxcsj",
|
||||
@@ -37,7 +37,7 @@
|
||||
"deskripsi": "<p>Penutupan program KKN-PMM yang berjalan dengan berbagai kegiatan pemberdayaan masyarakat.</p>",
|
||||
"content": "<p>Kegiatan KKN meliputi edukasi kesehatan, pengelolaan sampah, literasi keuangan, dan upaya ekonomi lokal sebagai bagian dari pembangunan desa berkelanjutan.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000tvnv8g2d206wv",
|
||||
"imageId": "cmk6cbbtw000fvnadk862le38"
|
||||
"imageName": "I9CDBqdeDXRbbzbPWhy6h-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxasj",
|
||||
@@ -45,7 +45,7 @@
|
||||
"deskripsi": "<p>Desa Darmasaba mengalokasikan anggaran untuk pengelolaan sampah berbasis komunitas.</p>",
|
||||
"content": "<p>Pengelolaan sampah mandiri melalui TPS3R, kader penyuluh, dan inovasi CINtA menjadi strategi desa dalam penanganan sampah sesuai kebijakan provinsi dan desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000tvnv8g2d206wv",
|
||||
"imageId": "cmk6cdmjp000ivnadeejerm59"
|
||||
"imageName": "Gq-gEDaGNb-FkKasVs7i4-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxbsj",
|
||||
@@ -53,7 +53,7 @@
|
||||
"deskripsi": "<p>Pembukaan festival desa untuk mendorong UMKM dan ekonomi lokal.</p>",
|
||||
"content": "<p>Kegiatan ini menampilkan berbagai UMKM yang membantu meningkatkan pendapatan masyarakat setempat.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000uvnv847ppcxqh",
|
||||
"imageId": "cmk6crib4000lvnadqtrhnb14"
|
||||
"imageName": "TymQ5xDH7vEUOA9BY63hr-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxdsj",
|
||||
@@ -61,7 +61,7 @@
|
||||
"deskripsi": "<p>Program inovatif untuk memperkuat ekonomi lokal melalui ekowisata dan kuliner.</p>",
|
||||
"content": "<p>Kegiatan mencakup pembangunan green house, edukasi pemasaran digital, literasi bahasa Inggris, dan pengembangan potensi kuliner desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000uvnv847ppcxqh",
|
||||
"imageId": "cmk6czfag000ovnad7kjz36lj"
|
||||
"imageName": "2nUvEBsMuigIJQWZIdcEJ-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxesj",
|
||||
@@ -69,7 +69,7 @@
|
||||
"deskripsi": "<p>Desa Darmasaba meraih penghargaan juara dalam evaluasi perkembangan desa untuk mendukung perekonomian dan pemerintahan lokal.</p>",
|
||||
"content": "<p>Prestasi desa ditandai dengan keberhasilan dalam lomba evaluasi perkembangan desa di tingkat provinsi dan kabupaten, yang berdampak positif pada ekonomi desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghx000uvnv847ppcxqh",
|
||||
"imageId": "cmk6d3zow000rvnades3btqrh"
|
||||
"imageName": "Hokgum3-nI_NWTWJRnWi3-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6agzxx00073b6rr3vhxfsj",
|
||||
@@ -77,7 +77,7 @@
|
||||
"deskripsi": "<p>Prestasi desa dalam forum internasional mengenai penanggulangan rabies.</p>",
|
||||
"content": "<p>Partisipasi dalam konferensi Rabies in Borneo menunjukkan kolaborasi lintas sektor dan penggunaan data dalam pelayanan publik desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tght000svnv8ok5rid2v",
|
||||
"imageId": "cmk6hgl8r000uvnadwchcqigp"
|
||||
"imageName": "T1fcksUoZSUqNMbzvr9WI-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp1z",
|
||||
@@ -85,7 +85,7 @@
|
||||
"deskripsi": "<p>Pemasangan spanduk larangan buang hewan sebagai langkah proteksi kesehatan masyarakat.</p>",
|
||||
"content": "<p>Pemerintah desa bersama Tim Bajra aktif dalam kampanye dan regulasi untuk mencegah rabies di tingkat desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tght000svnv8ok5rid2v",
|
||||
"imageId": "cmk6hh34d000xvnadr74cs014"
|
||||
"imageName": "-M_tICRVz6ZxOfvkuHQgU-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp2z",
|
||||
@@ -93,7 +93,7 @@
|
||||
"deskripsi": "<p>Kolaborasi pemerintahan desa dengan TP Posyandu untuk meningkatkan layanan masyarakat.</p>",
|
||||
"content": "<p>Kegiatan ini menunjukkan peran pemerintahan desa dalam mendukung layanan kesehatan dan pemberdayaan masyarakat.</p>",
|
||||
"kategoriBeritaId": "cmk69tght000svnv8ok5rid2v",
|
||||
"imageId": "cmk6hhl5p0010vnadx09hrg3n"
|
||||
"imageName": "O11hmN9oNwFKs_ACpH9uV-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp3z",
|
||||
@@ -101,7 +101,7 @@
|
||||
"deskripsi": "<p>Inisiatif pengelolaan sampah desa sebagai bagian dari inovasi teknologi lokal.</p>",
|
||||
"content": "<p>Penerapan metode pengelolaan sampah dan biopori menunjukkan upaya Desa Darmasaba dalam menggunakan solusi teknologi sederhana untuk masalah lingkungan.</p>",
|
||||
"kategoriBeritaId": "cmk69tghz000xvnv8kxzzt24h",
|
||||
"imageId": "cmk6hz5640013vnadwdmfzyoa"
|
||||
"imageName": "rrgHHUYHDuq3jW94HCRsq-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp4z",
|
||||
@@ -109,7 +109,7 @@
|
||||
"deskripsi": "<p>Program BAJRA menerapkan mekanisme pelaporan cepat berbasis data untuk penanggulangan rabies.</p>",
|
||||
"content": "<p>Penggunaan teknologi informasi dalam pelaporan kasus rabies membantu respons cepat pemerintahan desa dan komunitas.</p>",
|
||||
"kategoriBeritaId": "cmk69tghz000xvnv8kxzzt24h",
|
||||
"imageId": "cmk6hzlrg0016vnaduf57rp2i"
|
||||
"imageName": "igz0V0MCoLYqAgLIBRZdG-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp5z",
|
||||
@@ -117,7 +117,7 @@
|
||||
"deskripsi": "<p>Digitalisasi Desa Darmasaba Bersama PT. Bali Interaktif Perkasa.</p>",
|
||||
"content": "<p>Digitalisasi Desa Darmasaba Bersama PT. Bali Interaktif Perkasa<br><br>Dalam rangka mendukung transformasi digital dan inovasi desa, Desa Darmasaba bekerja sama dengan PT. Bali Interaktif Perkasa melaksanakan kegiatan Digitalisasi Desa.<br><br>Program ini bertujuan untuk memperkuat kapasitas desa dalam pemanfaatan teknologi informasi dan komunikasi, sehingga pelayanan publik menjadi lebih efektif, transparan, dan cepat. Masyarakat juga diberikan pemahaman terkait pemanfaatan platform digital untuk kegiatan administrasi, komunikasi, dan pengembangan potensi desa.<br><br>Kegiatan digitalisasi ini menjadi bagian dari komitmen Desa Darmasaba untuk mewujudkan desa cerdas (smart village) yang mampu bersaing dan beradaptasi di era digital, sekaligus meningkatkan inovasi dan pemberdayaan masyarakat.<br><br>Dengan kolaborasi ini, Desa Darmasaba menegaskan tekadnya untuk terus berinovasi, menghadirkan kemudahan bagi masyarakat, dan memperkuat tata kelola desa berbasis teknologi modern.<br><br>? Digitalisasi hari ini, kemajuan desa esok!<br><br>#DesaDarmasaba #DigitalisasiDesa #DesaCerdas #InovasiDesa #TransformasiDigital<br>#PemdesDarmasaba<br>#PerbekelDarmasaba<br>#DesaDarmasaba<br> #KitaDarmasaba<br> #DarmasabaBisa<br> <br> @kostergubernurbali<br> @giri.prasta<br> @iwayanadiarnawa<br> @gus.bota<br> @puturasniathiadiarnawa<br> @yunita_oktarini<br> @surya.suamba<br> @budhi.argawakba<br> @pemkabbadung<br> @ppidbadung<br> @dinaspmddukcapilprovbali<br> @surya_prabhawa<br> @kecamatanabiansemal<br> @dpmdbadungkab<br> @pemprov_bali<br> @prokompimbadung<br> @seputar_darmasaba</p>",
|
||||
"kategoriBeritaId": "cmk69tghz000xvnv8kxzzt24h",
|
||||
"imageId": "cmk6hzz1i0019vnadwdymqlrf"
|
||||
"imageName": "DzVIfpiAP3OcCsZ_VJ02b-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp6z",
|
||||
@@ -125,7 +125,7 @@
|
||||
"deskripsi": "<p>Festival Darmasaba Village Festival II melibatkan promosi digital produk UMKM.</p>",
|
||||
"content": "<p>Promosi dan dokumentasi digital menjadi bagian dari strategi pemasaran UMKM dalam festival desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000wvnv8umg2vloa",
|
||||
"imageId": "cmk6i925x001cvnadm3y2m04b"
|
||||
"imageName": "xzM77A6bDW2silyp_8W7n-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp7z",
|
||||
@@ -133,7 +133,7 @@
|
||||
"deskripsi": "<p>Pementasan seni tradisional menjadi bagian dari Darmasaba Village Festival II.</p>",
|
||||
"content": "<p>Kegiatan ini mengangkat warisan budaya lokal melalui pertunjukan dan lomba di festival desa.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000wvnv8umg2vloa",
|
||||
"imageId": "cmk6i9cc7001fvnadn9xnl8xq"
|
||||
"imageName": "2wivBEDcVNxHGG8HUBsNH-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk6aih8f00093b6rqw63yp8z",
|
||||
@@ -141,6 +141,6 @@
|
||||
"deskripsi": "<p>Forum dialog desa mengangkat tema partisipasi masyarakat dalam kegiatan budaya lokal.</p>",
|
||||
"content": "<p>Diskusi ini memperkuat peran budaya dalam pembangunan desa melalui keterlibatan warga dalam kegiatan adat dan sosial.</p>",
|
||||
"kategoriBeritaId": "cmk69tghy000wvnv8umg2vloa",
|
||||
"imageId": "cmk6i9qff001ivnadgrrghebr"
|
||||
"imageName": "T1fcksUoZSUqNMbzvr9WI-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
20
prisma/data/desa/gallery/foto/foto.json
Normal file
20
prisma/data/desa/gallery/foto/foto.json
Normal file
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"id": "cml0aiiv1000004l754ldaf2v",
|
||||
"name": "Kunjungan Ibu TP PKK Kabupaten Badung",
|
||||
"deskripsi": "<p>Dokumentasi kunjungan Ibu TP PKK Kabupaten Badung ke Desa Darmasaba pada awal tahun 2026.</p>",
|
||||
"imageName": "foto1Gallery.webp"
|
||||
},
|
||||
{
|
||||
"id": "cml0aiqd4000104l7f91ee3xu",
|
||||
"name": "Darmasaba Village Festival II 2024",
|
||||
"deskripsi": "<p>Foto kegiatan Darmasaba Village Festival II Tahun 2024 yang diselenggarakan di Lapangan Umum Desa Darmasaba, menampilkan lomba, pementasan seni, dan UMKM lokal.</p>",
|
||||
"imageName": "foto2Gallery.webp"
|
||||
},
|
||||
{
|
||||
"id": "cml0aiyi7000204l7f2sy657c",
|
||||
"name": "Lomba Mancing Air Deras Banjar Gulingan",
|
||||
"deskripsi": "<p>Galeri foto kegiatan lomba mancing air deras Komunitas Pemancing Gulingan di Desa Darmasaba, bagian dari pemberdayaan masyarakat.</p>",
|
||||
"imageName": "foto3Gallery.webp"
|
||||
}
|
||||
]
|
||||
@@ -3,77 +3,77 @@
|
||||
"id": "cmdxyb9zi0010vniiaeyi55ui",
|
||||
"name": "Surat Keterangan Beda Biodata Diri",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li><li><p>Fotocopy dokumen bersangkutan yang terdapat perbedaan biodata diri misal : Sertifikat Tanah/Ijazah/Polis Asuransi dan lainnya.</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6n68k80005vn6qtdbshoqi",
|
||||
"image2": "cmk6n68vw0006vn6qv65lrdw8"
|
||||
"imageName": "wFXYVHKHtU7posfhBKjZt-mobile.webp",
|
||||
"image2Name": "kTiZ9uhRUEwu0WeASU00b-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxycqz40014vniidftrixvf",
|
||||
"name": "Surat Keterangan Yatim Piatu",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau KIA atau Kartu Keluarga</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6n8rwv0007vn6q312rawvt",
|
||||
"image2": "cmk6n8s9b0008vn6qwd02eyjf"
|
||||
"imageName": "ZkvjJ7Zx8uBy2-d8RWNEt-mobile.webp",
|
||||
"image2Name": "hHfOWKz4USZK-z0nsD7Uz-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdwx3wph0003vnr74us2t7h7",
|
||||
"name": "Surat Keterangan Domisili Organisasi",
|
||||
"deskripsi": "<p>Persyaratan Dokumen:</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy Surat Keterangan Terdaftar (SKT) organisasi atau Pengukuhan Kelompok</p></li><li><p>Jika Pengajuan baru pembuatan SKT maka melengkapi Susunan Pengurus lengkap dengan Kop Organisasi</p></li><li><p>Tanggal berdiri/Tahun berdiri/Sejak kapan berdirinya organisasi</p></li></ul><p>Alur Pelayanan:</p>",
|
||||
"image": "cmk6n9ti90009vn6qt48wbklu",
|
||||
"image2": "cmk6n9tvx000avn6qwkguha7w"
|
||||
"imageName": "03WZn5JMKffo62cKzShF4-mobile.webp",
|
||||
"image2Name": "dnTcxeYQACzY5yzq-Rjoz-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxxv3i80004vniidg1mrucc",
|
||||
"name": "Surat Keterangan Penghasilan",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP orang tua atau Fotocopy Kartu keluarga</p></li><li><p>Membuat Surat Pernyataan Penghasilan bermaterai (disertai jumlah penghasilan)</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6nb69n000bvn6qx67n06ee",
|
||||
"image2": "cmk6nb6nq000cvn6q75730cr3"
|
||||
"imageName": "7er4OinxhuKRZUSkKeSYR-mobile.webp",
|
||||
"image2Name": "8ZtJeCnKwMAcEUBU0QvE7-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxxwp070008vnii9jbdcto7",
|
||||
"name": "Surat Keterangan Tidak Mampu",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP/KIA atau Kartu Keluarga</p></li><li><p>Fotocopy Kartu Indonesia Pintar/Kartu Perlindungan Sosial/Terdaftar dalam DTKS</p></li><li><p>Jika tidak memiliki Kartu tersebut diatas diwajibkan membuat Surat Pernyataan Tidak Mampu</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6nc438000dvn6q723r7phi",
|
||||
"image2": "cmk6nc4aa000evn6qwl5t53h4"
|
||||
"imageName": "Y7IuwpwjT3ZFYWpiXJZYw-mobile.webp",
|
||||
"image2Name": "Fbi-6gnhokkwux9hvriS--mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxxyfkl000cvnii1bxinnfi",
|
||||
"name": "Surat Keterangan Kelahiran",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy Surat lahir dari dokter/bidan (jika ada)</p></li><li><p>Fotocopy Kartu Keluarga</p></li><li><p>Fotocopy KTP 2 orang saksi</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6ndw2z000fvn6q3b9wxswd",
|
||||
"image2": "cmk6ndwbf000gvn6qusd4mkhq"
|
||||
"imageName": "qtdJ39rIbjGTJJQZflrDL-mobile.webp",
|
||||
"image2Name": "ldmfJBS2ZBhIda60yU2JW-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxy23pl000gvniihsg38aq4",
|
||||
"name": "Surat Keterangan Usaha",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li><li><p>Foto Lokasi dan Kegiatan Usaha di cetak dalam selembar kertas (diparaf dan stempel oleh Kelian Banjar Dinas)</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6nf4pu000hvn6qszs6xyp5",
|
||||
"image2": "cmk6nf53c000ivn6qawvoxndb"
|
||||
"imageName": "CAtRFHiM11gsY4ExcvGgc-mobile.webp",
|
||||
"image2Name": "MLWp-38kKygXKVekCh0q7-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxy4mgt000kvniib1nemjem",
|
||||
"name": "Surat Keterangan Kematian",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li><li><p>Surat Kematian dari rumah sakit atau dokter (jika ada)</p></li><li><p>tanggal kematian</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6ng6yk000jvn6q0ditzufj",
|
||||
"image2": "cmk6ng77b000kvn6q51j2s4q7"
|
||||
"imageName": "C0zE5lneKa888VJDHzgh--mobile.webp",
|
||||
"image2Name": "hhDK7OL0wQLik5dsh1a-L-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxy61a1000ovniif4ytb9hs",
|
||||
"name": "Surat Keterangan Tempat Usaha",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li><li><p>Foto Lokasi dan Kegiatan Usaha di cetak dalam selembar kertas (diparaf dan stempel oleh Kelian Banjar Dinas)</p></li><li><p>Surat Perjanjian Sewa/Kontrak atau Kwintansi Pembayaran Sewa 3 bulan terakhir bagi yang mengontrak tempat usaha, apabila tempat usaha milik sendiri lampiri dengan dokumen kepemilikan tempat usaha (dapat berupa fotocopy sppt atau Fotocopy Sertipikat Hak Milik)</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6nh7ez000lvn6qjfkqeufn",
|
||||
"image2": "cmk6nh7pq000mvn6qor967hjh"
|
||||
"imageName": "sVIfCUGBplNU8h1x99l8z-mobile.webp",
|
||||
"image2Name": "MM-1CZMai3eXwbVr2HAEv-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxy754q000svniiiz8oqyo0",
|
||||
"name": "Surat Keterangan Belum Kawin",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li><li><p>Khusus bagi yang berstatus duda atau janda melampirkan fotocopy akta cerai atau dokumen pendukung lainnya</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6n37tp0003vn6qqyvelh5s",
|
||||
"image2": "cmk6n388d0004vn6qby5fkuz8"
|
||||
"imageName": "oNH9VvRPlAmTI_Ndu3slN-mobile.webp",
|
||||
"image2Name": "Wze2x68vn-ShZAqgkSCMC-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdxy8pi2000wvnii48fc1sxd",
|
||||
"name": "Surat Keterangan Kelakuan Baik",
|
||||
"deskripsi": "<p>Persyaratan Dokumen :</p><ul><li><p>Pengantar Kelian Banjar Dinas di Wilayah Masing - masing</p></li><li><p>Fotocopy KTP atau Kartu Keluarga</p></li></ul><p>Alur Pelayanan :</p>",
|
||||
"image": "cmk6mvhwh0001vn6qa6ddzqfm",
|
||||
"image2": "cmk6mvi8c0002vn6q9vfyv6yt"
|
||||
"imageName": "tK9T6BObEQEdYU-5y1xnJ-mobile.webp",
|
||||
"image2Name": "sX9yfcM05OOx2ELhcSNWl-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -4,27 +4,27 @@
|
||||
"name": "Perbekel Darmasaba Terima Penghargaan pada Indonesia Alternative Dispute Resolution Awards 2025",
|
||||
"juara": "Penghargaan IADRA 2025",
|
||||
"deskripsi": "<p>Perbekel Darmasaba, Ida Bagus Surya Prabhawa Manuaba menerima penghargaan pada Indonesia Alternative Dispute Resolution Awards 2025 atas kontribusi dalam penyelesaian sengketa secara damai dan berkeadilan.</p>",
|
||||
"imageId": "cmkal9d2p0000vnexf8flpunj"
|
||||
"imageName": "cte_gy0V8glhDcghMa3-B-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmkalfbux0005vnexj8zplube",
|
||||
"name": "Penghargaan Bhawana Sewaka Nugraha kepada Perbekel Darmasaba",
|
||||
"juara": "Penghargaan Bhawana Sewaka Nugraha",
|
||||
"deskripsi": "<p>Penghargaan Bhawana Sewaka Nugraha diberikan kepada Perbekel Desa Darmasaba atas dedikasi dan komitmen dalam menjaga kelestarian lingkungan serta menginspirasi masyarakat untuk menciptakan desa yang hijau, bersih, dan berkelanjutan.</p>",
|
||||
"imageId": "cmkalfbsn0003vnex3bbsx5ja"
|
||||
"imageName": "hLoy_DjB_3Yie2vjaXDYz-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmkalg6hk0008vnexmsqwd3n7",
|
||||
"name": "Desa Darmasaba Raih Juara 1 Lomba Desa Tingkat Provinsi Bali Tahun 2025",
|
||||
"juara": "Juara 1 Lomba Desa Provinsi Bali 2025",
|
||||
"deskripsi": "<p>Desa Darmasaba meraih juara 1 dalam Lomba Desa Tingkat Provinsi Bali Tahun 2025 melalui sinergi elemen desa serta inovasi dalam pelayanan publik dan pemberdayaan masyarakat.</p>",
|
||||
"imageId": "cmkalg6fh0006vnexid4z9vlg"
|
||||
"imageName": "VxELyZ0ifdHOdRFu7aBSz-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmkalgucu000bvnexw2blt1v3",
|
||||
"name": "Pemerintah Desa Darmasaba Raih Peringkat IV dalam Ajang Mangupura Award Tahun 2025",
|
||||
"juara": "Peringkat IV Mangupura Award 2025",
|
||||
"deskripsi": "<p>Desa Darmasaba mendapatkan penghargaan Peringkat IV pada Mangupura Award 2025 dari Pemerintah Kabupaten Badung atas tata kelola pemerintahan, inovasi layanan, dan pemberdayaan masyarakat.</p>",
|
||||
"imageId": "cmkalguac0009vnex5dpixivn"
|
||||
"imageName": "xgrBxDdo8g7KA-3zNbRGj-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"deskripsi": "<p>Taman Beji Cengana adalah situs keagamaan dan budaya tradisional Bali</p>",
|
||||
"content": "<p>Taman Beji Cengana adalah situs keagamaan dan budaya tradisional Bali yang memadukan unsur spiritual, ritual pembersihan (melukat), serta nilai budaya lokal yang berpadu dengan suasana alam yang tenang dan harmonis.</p>",
|
||||
"kategoriId": "cmk3pmwq10008vn9bqdquv153",
|
||||
"imageId": "cmk3rbc53000cvn9bjsywrj18"
|
||||
"imageName": "yySqpA7ougpXi6cJPskg9-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3q0sez000bvn9b3iyyct5m",
|
||||
@@ -13,7 +13,7 @@
|
||||
"deskripsi": "<p>Gumuh Sari merupakan tempat rekreasi nyaman di kawasan badung yang dapat dinikmati oleh semua umur dengan berbagai fasilitas hiburan, seperti Water Park, Pusat Kebugaran, Lapangan Futsal dan Restaurant.</p>",
|
||||
"content": "<p>Gumuh Sari merupakan tempat rekreasi nyaman di kawasan badung yang dapat dinikmati oleh semua umur dengan berbagai fasilitas hiburan, seperti Water Park, Pusat Kebugaran, Lapangan Futsal dan Restaurant.<br><br><strong>Buka setiap hari</strong><br>Senin-Jumat: pukul 10.00-18.00 WITA (Weekday)<br>Sabtu-Minggu: pukul 09.00-18.00 WITA (Weekend)<br><br><strong>Wahana:</strong><br>- Kolam Renang Anak<br>- Kolam Renang Dewasa<br>- Kolam Renang Olympic<br>- Kids Playground Indoor<br>- Ayunan<br>- ATV<br><br><strong>Fasilitas:</strong><br>- Tempat ibadah<br>- Area parkir<br>- Gazebo<br>- Restoran dan kantin<br>- WiFi gratis<br>- Kamar mandi dan ruang bilas<br>- Ruang loker<br><br><strong>Kategori Tiket:</strong><br>Senin-Sabtu<br>- Dewasa 35.000<br>- Anak-anak (3-12 tahun) 20.000<br><br>Minggu & Libur Nasional<br>- Dewasa 40.000<br>- Anak-anak (3-12 tahun) 25.000<br><br>Hari Raya<br>- Dewasa 45.000<br>- Anak-anak (3-12 tahun) 35.000<br><br><strong>Media Sosial:</strong><br>- Instagram: gumuhsari_rekreasi<br><a target='_blank' rel='noopener noreferrer nofollow' href='https://www.instagram.com/gumuhsari_rekreasi/'><u>https://www.instagram.com/gumuhsari_rekreasi/</u></a><br><br>- Tiktok: gumuhsari_rekreasi<br><a target='_blank' rel='noopener noreferrer nofollow' href='https://www.tiktok.com/@gumuhsari_rekreasi'><u>https://www.tiktok.com/@gumuhsari_rekreasi</u></a></p>",
|
||||
"kategoriId": "cmk3pmwq10008vn9bqdquv153",
|
||||
"imageId": "cmk3q0s8b0009vn9blvh0q5cc"
|
||||
"imageName": "uki9Zy0DqrEtSg9Lrgyyk-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3rsch1000hvn9bhmyhsjqm",
|
||||
@@ -21,7 +21,7 @@
|
||||
"deskripsi": "<p>Sistem pengelolaan sampah terpadu di Desa Darmasaba yang dikenal dengan TPS3R Pudak Mesari.</p>",
|
||||
"content": "<p>TPS3R Pudak Mesari adalah fasilitas pengelolaan sampah terpadu yang mengoptimalkan pemilahan, pengolahan dan daur ulang sampah masyarakat sehingga mendukung lingkungan yang bersih dan berkelanjutan di Desa Darmasaba.</p>",
|
||||
"kategoriId": "cmk3pmwq10008vn9bqdquv153",
|
||||
"imageId": "cmk3rscb0000fvn9bq6il16ba"
|
||||
"imageName": "F8SuL9DjCqLXlSwmgSJv_-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3s4kz7000mvn9b8thk98c4",
|
||||
@@ -29,7 +29,7 @@
|
||||
"deskripsi": "<p>Badan Usaha Milik Desa yang bergerak dalam berbagai usaha ekonomi masyarakat Darmasaba.</p>",
|
||||
"content": "<p>Bumdes Pudak Mesari merupakan badan usaha milik desa yang mengembangkan kegiatan usaha produktif untuk meningkatkan perekonomian masyarakat lokal, termasuk pengelolaan usaha jasa dan komoditas lokal yang dikelola secara partisipatif.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3s4kvu000kvn9bahu2vo5f"
|
||||
"imageName": "daDa40Y8dxune0l_cxULD-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3sbgge000pvn9bd3r8i0on",
|
||||
@@ -37,7 +37,7 @@
|
||||
"deskripsi": "<p>Sektor pertanian sebagai salah satu potensi utama Desa Darmasaba.</p>",
|
||||
"content": "<p>Pertanian di Darmasaba mencakup berbagai komoditas yang ditanam oleh masyarakat termasuk padi, tanaman hortikultura dan lain-lain, yang menjadi basis mata pencaharian dan kontribusi terhadap ekonomi desa.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3sbgd8000nvn9bqooq77ix"
|
||||
"imageName": "yms7mL_T6fy--Eze-mTwc-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3smnj3000svn9b2ww5hesp",
|
||||
@@ -45,7 +45,7 @@
|
||||
"deskripsi": "<p>Jalur jogging dan area rekreasi alam yang dimanfaatkan masyarakat untuk aktivitas sehat dan pariwisata lokal.</p>",
|
||||
"content": "<p>Jogging Track Tegeh Aban, Karang Gadon dan Munduk Uma adalah area terbuka hijau yang dikembangkan sebagai fasilitas olahraga dan rekreasi, memberikan ruang beraktivitas fisik sambil menikmati suasana alam Desa Darmasaba.</p>",
|
||||
"kategoriId": "cmk3pmwq10008vn9bqdquv153",
|
||||
"imageId": "cmk3smnbf000qvn9b28ma8las"
|
||||
"imageName": "AFA1PZtHwKkwmWCC4M7lM-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3t8hgs000vvn9bna6pnw8r",
|
||||
@@ -53,7 +53,7 @@
|
||||
"deskripsi": "<p>Bendungan lokal yang berfungsi sebagai sumber irigasi pertanian.</p>",
|
||||
"content": "<p>Dam Tanah Putih merupakan bendungan yang mendukung pengairan sawah dan lahan pertanian di Desa Darmasaba, yang membantu peningkatan produktivitas pertanian masyarakat setempat.</p>",
|
||||
"kategoriId": "cmk3pmwq10008vn9bqdquv153",
|
||||
"imageId": "cmk3t8ha3000tvn9bkqsty6sq"
|
||||
"imageName": "84pnYeV2_9f4xplh9RBXW-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3tlrkb000yvn9bo1vse4c5",
|
||||
@@ -61,7 +61,7 @@
|
||||
"deskripsi": "<p>Usaha mikro, kecil, dan menengah masyarakat Desa Darmasaba.</p>",
|
||||
"content": "<p>UMKM di Darmasaba mencakup berbagai usaha kecil produktif seperti kuliner, kerajinan tangan, dan jasa lainnya, yang menjadi pilar kegiatan ekonomi dan pemberdayaan masyarakat lokal.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3tlrdl000wvn9b67jkppzh"
|
||||
"imageName": "5VSeupjyjtam02PNJW3ZG-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3tzpku0011vn9beq2kzyen",
|
||||
@@ -69,7 +69,7 @@
|
||||
"deskripsi": "<p>Wilayah yang menyediakan berbagai pilihan kuliner khas lokal Desa Darmasaba.</p>",
|
||||
"content": "<p>Kawasan kuliner di Darmasaba menjadi tempat berkumpul dan menikmati makanan khas lokal, mendukung kegiatan ekonomi UMKM kuliner desa serta daya tarik wisata kuliner.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3tzpd7000zvn9bu519xrjk"
|
||||
"imageName": "gjwx1dcHKMJEICbLF6g88-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3u7gzh0014vn9brvlz3fjp",
|
||||
@@ -77,7 +77,7 @@
|
||||
"deskripsi": "<p>Industri kecil menengah yang fokus pada pengolahan produk pangan lokal.</p>",
|
||||
"content": "<p>IKM berbasis pengolahan pangan di desa mencakup produksi makanan olahan yang dihasilkan oleh masyarakat setempat, memperkaya nilai tambah hasil pertanian lokal dan menciptakan peluang bisnis.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3u7gsg0012vn9bhqhsw5g6"
|
||||
"imageName": "j3q1NLvwPFrxAmgMXBmq2-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3udr960017vn9bq33ce6mw",
|
||||
@@ -85,6 +85,6 @@
|
||||
"deskripsi": "<p>Usaha budidaya ikan lele sebagai potensi perikanan desa.</p>",
|
||||
"content": "<p>Peternakan ikan lele menjadi salah satu bentuk usaha budidaya perikanan di Darmasaba, memberikan sumber pendapatan tambahan bagi petani ikan dan diversifikasi komoditas desa.</p>",
|
||||
"kategoriId": "cmk3s1ks6000ivn9bcrv960ko",
|
||||
"imageId": "cmk3udr2s0015vn9bqn9hxdxx"
|
||||
"imageName": "eZCq49lXnx6zKslb6hLxz-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
"pengalaman": "<ul><li>2021 - 2027: Perbekel Desa Darmasaba</li><li>2015 - Sekarang: Founder & Managing Director Mantra Legal Consultants & Advocates</li><li>2020 - Sekarang: Founder Ugawa Record Music Studio</li><li>2010 - 2016: Dosen Fakultas Hukum Universitas Mahasaraswati Denpasar</li></ul>",
|
||||
"pengalamanOrganisasi": "<ul> <li>1996 – 1997: Ketua OSIS SMP Negeri 1 Abiansemal</li><li>1999 – 2000: Ketua OSIS SMA Negeri 1 Mengwi</li> <li>2008 – 2009: Ketua BEM Universitas Mahasaraswati Denpasar</li> <li>2008 – 2010: Ketua Sekaa Taruna Sila Dharma, Banjar Tengah, Desa Adat Tegal, Darmasaba</li> <li>2020 – Sekarang: Pengurus Young Lawyer Committee Peradi Denpasar</li> <li>2021 – Sekarang: Dewan Kehormatan Himpunan Pengusaha Muda Indonesia (HIPMI) Badung</li> <li>2023 – 2028: Komite Tetap Advokasi – Bidang Hukum dan Regulasi Kamar Dagang dan Industri Badung</li> </ul>",
|
||||
"programUnggulan": "<h3>Pemberdayaan Ekonomi dan UMKM</h3> <ul> <li>Pelatihan dan pendampingan UMKM lokal</li> <li>Program bantuan modal usaha bagi pelaku usaha kecil</li><li>Digitalisasi UMKM untuk meningkatkan pemasaran produk lokal</li></ul>",
|
||||
"imageId": "cmk4xh3gz0000vnwqjy4zfr3w"
|
||||
"imageName": "perbekel-profile-desa.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -3,63 +3,63 @@
|
||||
"id": "cmk4yswiy0003vnwq97wem6t2",
|
||||
"nama": "Si Gede Kania",
|
||||
"periode": "Tahun 1943 - 1946",
|
||||
"imageId": "cmk4yswge0001vnwqgfieunnm",
|
||||
"imageName": "120DDmtAkWEOlu_z56EVj-mobile.webp",
|
||||
"daerah": "Perbekel Tegal"
|
||||
},
|
||||
{
|
||||
"id": "cmk4yvuxg0006vnwqa0nk7jcx",
|
||||
"nama": "Si Gede Gandem",
|
||||
"periode": "Tahun 1946 - 1950",
|
||||
"imageId": "cmk4yvuv20004vnwqqq8ifxq8",
|
||||
"imageName": "bJEAL2K_DcR9AhabklcdP-mobile.webp",
|
||||
"daerah": "Perbekel Tegal"
|
||||
},
|
||||
{
|
||||
"id": "cmk4ywml70009vnwqnnrp0cpq",
|
||||
"nama": "I Wayan Sama",
|
||||
"periode": "Tahun 1950 - 1953",
|
||||
"imageId": "cmk4ywmiu0007vnwq5ea5jz1z",
|
||||
"imageName": "szxGnXEFqa0k0nvZ-ALVG-mobile.webp",
|
||||
"daerah": "Perbekel Tegal"
|
||||
},
|
||||
{
|
||||
"id": "cmk4yzix3000cvnwqn2pa57gs",
|
||||
"nama": "I Wayan Nambreg",
|
||||
"periode": "Tahun 1950 - 1960",
|
||||
"imageId": "cmk4yzitx000avnwq7479tvxb",
|
||||
"imageName": "ectWSAf6wfzIPzKMf3wzo-mobile.webp",
|
||||
"daerah": "Perbekel Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmk4z0sgd000fvnwqlgjasqx9",
|
||||
"nama": "Ida Bagus Putu Oka",
|
||||
"periode": "Tahun 1953 - 1974",
|
||||
"imageId": "cmk4z0scm000dvnwqlntylzyk",
|
||||
"imageName": "VwjN6P8HyaKpNngtLCt6z-mobile.webp",
|
||||
"daerah": "Perbekel Tegal / Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmk4z1w8m000ivnwqe68w5vjg",
|
||||
"nama": "I Nyoman Patra",
|
||||
"periode": "Tahun 1974 - 1991",
|
||||
"imageId": "cmk4z1vqs000gvnwqj579yvnt",
|
||||
"imageName": "f3tdB74WjhVVJXmAE7Sev-mobile.webp",
|
||||
"daerah": "Perbekel Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmk4z2y3u000lvnwq7fbr3paz",
|
||||
"nama": "I Made Rudja",
|
||||
"periode": "Tahun 1991 - 2007",
|
||||
"imageId": "cmk4z2y0r000jvnwq2jgrs565",
|
||||
"imageName": "X3FbO9ns3We5GM1uAwds1-mobile.webp",
|
||||
"daerah": "Perbekel Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmk4z6esm000ovnwqacek3jlx",
|
||||
"nama": "I Wayan Kaler, S.H., M.H.",
|
||||
"periode": "Tahun 2007 - 2013",
|
||||
"imageId": "cmk4z6epq000mvnwq81dfq29b",
|
||||
"imageName": "AO-mB9JXm0ahmNnSAEDJ3-mobile.webp",
|
||||
"daerah": "Perbekel Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmk4z7e77000rvnwqo2wkmbwl",
|
||||
"nama": "I Made Taram, S.H.",
|
||||
"periode": "Tahun 2013 - 2019",
|
||||
"imageId": "cmk4z7e5g000pvnwq7k45e366",
|
||||
"imageName": "ropKaJjSbK_XAyxd8mEYt-mobile.webp",
|
||||
"daerah": "Perbekel Darmasaba"
|
||||
}
|
||||
]
|
||||
|
||||
26
prisma/data/desa/profile/profileDesaImage.json
Normal file
26
prisma/data/desa/profile/profileDesaImage.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkz5lumu0008vn5gso2vrejt",
|
||||
"label": "Bunga Pudak",
|
||||
"imageName": "fpovTIXnnsX5duqLeoSx6-mobile.webp",
|
||||
"maskotDesaId": "edit"
|
||||
},
|
||||
{
|
||||
"id": "cmkz5lumu0009vn5gcn3ah0ku",
|
||||
"label": "Pohon Pudak",
|
||||
"imageName": "I01xTmkCZo3u8-y0w07TG-mobile.webp",
|
||||
"maskotDesaId": "edit"
|
||||
},
|
||||
{
|
||||
"id": "cmkz5lumu000avn5grvxbmaux",
|
||||
"label": "Tari Sekar Pudak",
|
||||
"imageName": "MlTQffVnQ-itl-vgO0BGM-mobile.webp",
|
||||
"maskotDesaId": "edit"
|
||||
},
|
||||
{
|
||||
"id": "cmkz5lumu000bvn5gwujxhp2r",
|
||||
"label": "Klimaks Tari Pudak",
|
||||
"imageName": "PdIqEFHq5Q12PEi0NRUJ3-mobile.webp",
|
||||
"maskotDesaId": "edit"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
[
|
||||
{
|
||||
"id": "795b3e69-2bdb-4d2b-8331-9433fc604723",
|
||||
"year": 2021,
|
||||
"totalPoorPopulation": 480
|
||||
},
|
||||
{
|
||||
"id": "0e61ed28-1789-4329-86bc-67bdb715d4fa",
|
||||
"year": 2022,
|
||||
"totalPoorPopulation": 450
|
||||
},
|
||||
{
|
||||
"id": "0f80e31e-56d7-42aa-aede-e3104f1bca4f",
|
||||
"year": 2023,
|
||||
"totalPoorPopulation": 430
|
||||
},
|
||||
{
|
||||
"id": "3668ecd4-4c4c-4a87-a39a-72661fce5a2c",
|
||||
"year": 2024,
|
||||
"totalPoorPopulation": 410
|
||||
},
|
||||
{
|
||||
"id": "854a375e-4662-4e4c-abd8-59115b4910a9",
|
||||
"year": 2025,
|
||||
"totalPoorPopulation": 390
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkko983k000104l2ff4i8awk",
|
||||
"SD": "35",
|
||||
"SMP": "28",
|
||||
"SMA": "20",
|
||||
"D3": "8",
|
||||
"S1": "15"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,9 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkko8wam000004l2h99rekid",
|
||||
"usia18_25": "25",
|
||||
"usia26_35": "18",
|
||||
"usia36_45": "12",
|
||||
"usia46_keatas": "10"
|
||||
}
|
||||
]
|
||||
@@ -94,6 +94,24 @@
|
||||
"educatedUnemployment": 78,
|
||||
"uneducatedUnemployment": 54,
|
||||
"percentageChange": -2.22
|
||||
},
|
||||
{
|
||||
"id": "13f11e4f-c96e-4155-bf30-3f45076ee34c",
|
||||
"month": "Jan",
|
||||
"year": 2026,
|
||||
"totalUnemployment": 350,
|
||||
"educatedUnemployment": 200,
|
||||
"uneducatedUnemployment": 150,
|
||||
"percentageChange": 0.0
|
||||
},
|
||||
{
|
||||
"id": "477b3b0c-af18-4816-a00b-dcac530d57cd",
|
||||
"month": "Feb",
|
||||
"year": 2026,
|
||||
"totalUnemployment": 270,
|
||||
"educatedUnemployment": 150,
|
||||
"uneducatedUnemployment": 120,
|
||||
"percentageChange": -22.9
|
||||
}
|
||||
]
|
||||
|
||||
6
prisma/data/ekonomi/pendapatan-asli-desa/apbDesa.json
Normal file
6
prisma/data/ekonomi/pendapatan-asli-desa/apbDesa.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"id": "6b52d644-09b7-4af5-a78b-3dad854973e7",
|
||||
"tahun": 2025
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"id": "82b8c96f-7817-482f-ba5e-85ad78c7bd57",
|
||||
"name": "Belanja Desa (Realisasi Semester I)",
|
||||
"nilai": 43871400
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"id": "cb593f99-9f15-4294-9c17-a93c8c149a25",
|
||||
"name": "Pembiayaan Neto (SILPA 2024)",
|
||||
"nilai": 69289666
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"id": "24576ca1-3dee-4608-9fb3-51f16efce901",
|
||||
"name": "Pendapatan Asli Desa (PADes)",
|
||||
"nilai": 10610011
|
||||
}
|
||||
]
|
||||
@@ -1,23 +1,23 @@
|
||||
[
|
||||
{
|
||||
"id": "dd92a029-cd7d-4b60-8a3b-dd88e61fe715",
|
||||
"id": "c2760e40-f770-11f0-89ff-719f813f71b3",
|
||||
"nama": "BLT-DD (Bantuan Langsung Tunai Dana Desa)",
|
||||
"icon": "bantuan",
|
||||
"deskripsi": "<p>Program pemberian Bantuan Langsung Tunai yang dibiayai dari Dana Desa untuk meringankan beban ekonomi keluarga miskin/prasejahtera di Desa Darmasaba.</p>",
|
||||
"statistikId": "d59481a3-ff7f-4e52-cd5c-89e143eeb869"
|
||||
"tahun": 2023
|
||||
},
|
||||
{
|
||||
"id": "dd92a029-cd7d-4b60-9b4c-dd88e61fe715",
|
||||
"id": "c7f0f2e0-f770-11f0-89ff-719f813f71b3",
|
||||
"nama": "Penguatan Ketahanan Pangan",
|
||||
"icon": "air",
|
||||
"deskripsi": "<p>Kegiatan pemberdayaan masyarakat dalam ketahanan pangan untuk mendukung ketersediaan pangan keluarga kurang mampu dan meningkatkan kemampuan produksi pangan lokal.</p>",
|
||||
"statistikId": "d59481a3-ff7f-4e52-de6d-89e143eeb869"
|
||||
"tahun": 2024
|
||||
},
|
||||
{
|
||||
"id": "dd92a029-cd7d-4b60-0c5d-dd88e61fe715",
|
||||
"id": "ccda45e0-f770-11f0-89ff-719f813f71b3",
|
||||
"nama": "Peningkatan IKM berbasis E-commerce",
|
||||
"icon": "ekonomi",
|
||||
"deskripsi": "<p>Program peningkatan keterampilan usaha mikro kecil (IKM) termasuk pelatihan branding, pengemasan, dan promosi digital untuk memperkuat ekonomi rumah tangga melalui pemasaran online.</p>",
|
||||
"statistikId": "d59481a3-ff7f-4e52-df7e-89e143eeb869"
|
||||
"tahun": 2025
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
[
|
||||
{
|
||||
"id": "d59481a3-ff7f-4e52-cd5c-89e143eeb869",
|
||||
"id": "85d8a150-f770-11f0-89ff-719f813f71b3",
|
||||
"tahun": 2023,
|
||||
"jumlah": 20
|
||||
},
|
||||
{
|
||||
"id": "d59481a3-ff7f-4e52-de6d-89e143eeb869",
|
||||
"id": "993b8d20-f770-11f0-89ff-719f813f71b3",
|
||||
"tahun": 2024,
|
||||
"jumlah": 30
|
||||
},
|
||||
{
|
||||
"id": "d59481a3-ff7f-4e52-df7e-89e143eeb869",
|
||||
"id": "9eb3b2a0-f770-11f0-89ff-719f813f71b3",
|
||||
"tahun": 2025,
|
||||
"jumlah": 20
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ export default async function fetchWithRetry(
|
||||
retries = 3,
|
||||
timeoutMs = 20000
|
||||
) {
|
||||
if (!url || url.trim() === "") {
|
||||
throw new Error("fetchWithRetry called with empty URL");
|
||||
}
|
||||
for (let attempt = 1; attempt <= retries; attempt++) {
|
||||
const controller = new AbortController();
|
||||
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
38
prisma/data/inovasi/ajukan-ide/ajukan-ide.json
Normal file
38
prisma/data/inovasi/ajukan-ide/ajukan-ide.json
Normal file
@@ -0,0 +1,38 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkm710n3000xvnsw1ni0vlam",
|
||||
"name": "I Made Rudi",
|
||||
"alamat": "Darmasaba, Abiansemal, Badung, Bali",
|
||||
"namaIde": "Program Bersama Jaga Rabies (BAJRA)",
|
||||
"deskripsi": "Inovasi berbasis komunitas yang mengintegrasikan pelaporan cepat masyarakat, edukasi berkelanjutan, serta koordinasi lintas sektor untuk penanggulangan rabies secara efektif di Desa Darmasaba.",
|
||||
"masalah": "Tingginya kasus rabies dan rendahnya pelaporan serta koordinasi penanganan antar warga sehingga perlunya pendekatan komunitas yang terstruktur.",
|
||||
"benefit": "Meningkatkan kesadaran vaksinasi, respons cepat terhadap kasus gigitan, serta memperkuat sistem kesiapsiagaan kesehatan hewan dan manusia di komunitas."
|
||||
},
|
||||
{
|
||||
"id": "cmkm710n3000xvnsw1ni1wmbn",
|
||||
"name": "I Made Rudja",
|
||||
"alamat": "Darmasaba, Abiansemal, Badung, Bali",
|
||||
"namaIde": "Program LESTARI – Ekowisata dan Edukasi Lingkungan",
|
||||
"deskripsi": "Inovasi pengembangan ekowisata berbasis persawahan yang menggabungkan edukasi lingkungan dan potensi desa untuk menarik wisatawan serta meningkatkan kesejahteraan masyarakat.",
|
||||
"masalah": "Kurangnya sarana edukasi lingkungan dan kurang optimalnya pemanfaatan potensi lahan persawahan sebagai sumber pendapatan masyarakat.",
|
||||
"benefit": "Menambah peluang ekonomi desa, meningkatkan kesadaran lingkungan, dan memperkuat daya tarik wisata lokal Desa Darmasaba."
|
||||
},
|
||||
{
|
||||
"id": "cmkm710n3000xvnsw1ni2xnco",
|
||||
"name": "I Wayan Sumi",
|
||||
"alamat": "Darmasaba, Abiansemal, Badung, Bali",
|
||||
"namaIde": "Darmasaba Digital Project",
|
||||
"deskripsi": "Ide inovatif untuk mengembangkan satu platform digital terpadu bagi layanan pemerintahan desa serta administrasi kerja desa yang lebih cepat dan transparan.",
|
||||
"masalah": "Proses administrasi dan pelayanan publik desa yang masih belum terintegrasi secara digital sehingga kurang efisien.",
|
||||
"benefit": "Meningkatkan efisiensi kerja perangkat desa, transparansi data, dan kecepatan layanan kepada masyarakat."
|
||||
},
|
||||
{
|
||||
"id": "cmkm710n3000xvnsw1ni3yodp",
|
||||
"name": "I Ketut Surya",
|
||||
"alamat": "Darmasaba, Abiansemal, Badung, Bali",
|
||||
"namaIde": "Program CINTA – Cara Indah Tangani Sampah",
|
||||
"deskripsi": "Inovasi pengelolaan sampah melalui mekanisme pilah, kompos, dan bursa sampah (BARES) untuk mengurangi volume sampah di desa dan meningkatkan nilai ekonomi dari sampah yang ternyata bernilai jual.",
|
||||
"masalah": "Volume sampah meningkat yang berdampak pada lingkungan, kurangnya sistem pengelolaan sampah berbasis komunitas.",
|
||||
"benefit": "Lingkungan desa menjadi bersih, sampah bernilai ekonomi dan peningkatan keterlibatan masyarakat dalam pengelolaan sampah."
|
||||
}
|
||||
]
|
||||
32
prisma/data/inovasi/desa-digital/desa-digital.json
Normal file
32
prisma/data/inovasi/desa-digital/desa-digital.json
Normal file
@@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkkshcox000504l88lp54coc",
|
||||
"name": "Darmasaba Digital App",
|
||||
"deskripsi": "<p>Aplikasi digital desa yang dikembangkan oleh Pemerintah Desa Darmasaba pada tahun 2024 untuk mempermudah pelayanan publik dan informasi pemerintahan berbasis digital.</p>",
|
||||
"imageId": "cmkksb3jr0005vni4sp3ogr87"
|
||||
},
|
||||
{
|
||||
"id": "cmkkshln8000604l8c9b5b4il",
|
||||
"name": "D’DAMART (Darmasaba Digital Market)",
|
||||
"deskripsi": "<p>Sistem pasar UMKM digital berbasis website yang dikembangkan untuk meningkatkan akses pasar dan pemasaran produk UMKM Desa Darmasaba melalui platform digital.</p>",
|
||||
"imageId": "cmkksoze80008vni4ki2ry81r"
|
||||
},
|
||||
{
|
||||
"id": "cmkm1a1g80007vnsw8ejmj816",
|
||||
"name": "Media Aspirasi dan Pengaduan Warga",
|
||||
"deskripsi": "<p>Media aspirasi dan pengaduan warga disediakan sebagai wadah partisipasi masyarakat dalam menyampaikan saran, masukan, maupun keluhan secara transparan dan terstruktur. Fitur ini memperkuat komunikasi dua arah antara pemerintah desa dan masyarakat, sehingga setiap aspirasi dapat ditindaklanjuti secara lebih cepat dan akuntabel.</p>",
|
||||
"imageId": "cmkm1a14d0005vnsww1tsd92o"
|
||||
},
|
||||
{
|
||||
"id": "cmkm0w0s50003vnswmwpnqsi5",
|
||||
"name": "Website Desa Resmi",
|
||||
"deskripsi": "<p>Website Desa Darmasaba berfungsi sebagai sarana utama penyampaian informasi resmi kepada masyarakat. Melalui website ini, pemerintah desa menghadirkan keterbukaan informasi publik, mempermudah akses warga terhadap berita, pengumuman, serta agenda kegiatan desa, sekaligus menjadi pusat data dan referensi terkait profil dan struktur pemerintahan desa.</p>",
|
||||
"imageId": "cmkm0z9hx0004vnswtjd2bk3z"
|
||||
},
|
||||
{
|
||||
"id": "cmkm1c8wx000avnswksc56orq",
|
||||
"name": "Publikasi Kegiatan Desa Secara Digital",
|
||||
"deskripsi": "<p>Publikasi kegiatan desa secara digital bertujuan untuk mendokumentasikan dan menyebarluaskan berbagai aktivitas serta program kerja pemerintah desa. Melalui artikel dan dokumentasi foto, masyarakat dapat mengetahui perkembangan kegiatan desa secara terbuka, sekaligus meningkatkan kepercayaan publik terhadap pelaksanaan program desa.</p>",
|
||||
"imageId": "cmkm1c8py0008vnsw0unbxkpq"
|
||||
}
|
||||
]
|
||||
26
prisma/data/inovasi/info-teknologi/info-teknologi.json
Normal file
26
prisma/data/inovasi/info-teknologi/info-teknologi.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkm2xlqr000mvnswdaymiho6",
|
||||
"name": "Darmasaba Digital App",
|
||||
"deskripsi": "<p>Aplikasi layanan desa berbasis teknologi untuk transparansi informasi dan layanan publik di Desa Darmasaba yang membantu warga mendapatkan informasi administratif, berita desa, dan pelayanan digital lainnya secara cepat dan mudah.</p>",
|
||||
"imageId": "cmkm3bnkt000qvnswzhqa4upf"
|
||||
},
|
||||
{
|
||||
"id": "cmkm3b1fw000pvnswpr7hgzhp",
|
||||
"name": "Program Digitalisasi Desa",
|
||||
"deskripsi": "<p>Program kerja sama Desa Darmasaba bersama PT. Bali Interaktif Perkasa untuk memperkuat kapasitas pemanfaatan teknologi informasi dan komunikasi dalam administrasi desa, pelayanan publik, serta pemberdayaan digital masyarakat.</p>",
|
||||
"imageId": "cmkm3b1a2000nvnswb9x48dzk"
|
||||
},
|
||||
{
|
||||
"id": "cmkm3fwmq000tvnswejmhm7yc",
|
||||
"name": "Pengembangan Sistem Informasi Desa",
|
||||
"deskripsi": "<p>Inisiatif pengembangan Sistem Informasi Desa yang mendukung pengelolaan data desa secara digital, termasuk data publik, laporan, dan statistik warga, sebagai bagian dari peningkatan kapabilitas teknologi informasi desa.</p>",
|
||||
"imageId": "cmkm3fwg4000rvnsw5d1vbiz0"
|
||||
},
|
||||
{
|
||||
"id": "cmkm3hjp6000wvnswkuylnf53",
|
||||
"name": "Pelayanan Kependudukan Berbasis Digital",
|
||||
"deskripsi": "<p>Program untuk menyediakan layanan kependudukan secara digital, termasuk integrasi sistem administrasi kependudukan desa dengan sistem nasional, guna mempercepat layanan e-KTP, kartu keluarga, dan berkas kependudukan lainnya.</p>",
|
||||
"imageId": "cmkm3hjhz000uvnswwqu6z9f6"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"id": "cmklzhfjb0000vnswml6z7xnj",
|
||||
"name": "Bersama Jaga Rabies (BAJRA)",
|
||||
"tahun": 2025,
|
||||
"slug": "Program kolaborasi penanggulangan rabies",
|
||||
"deskripsi": "<p>Inovasi BAJRA (Bersama Jaga Rabies) merupakan program kolaboratif Desa Darmasaba bersama berbagai pihak, termasuk Sahabat Anti Rabies Indonesia dan Dinas Pertanian dan Pangan Kabupaten Badung, yang fokus pada edukasi publik, pelaporan cepat, serta strategis vaksinasi anjing guna upaya eliminasi rabies. Inovasi ini diangkat hingga tingkat internasional di Konferensi Rabies in Borneo 2025.</p>",
|
||||
"kolaborator": "Sahabat Anti Rabies Indonesia, Bidang Kesehatan Hewan Dinas Pertanian dan Pangan Kabupaten Badung"
|
||||
},
|
||||
{
|
||||
"id": "cmklzhfjb0000vnswml6z8yok",
|
||||
"name": "Inovasi Eco-Enzyme dan Optimalisasi Tata Kelola BUMDes",
|
||||
"tahun": 2025,
|
||||
"slug": "Kolaborasi inovasi ekonomi & lingkungan",
|
||||
"deskripsi": "<p>Program kerja sama Desa Darmasaba dengan Universitas Warmadewa dan BUMDes setempat yang berfokus pada pelatihan produksi eco-enzyme ramah lingkungan dan pengembangan tata kelola BUMDes modern untuk meningkatkan kesejahteraan masyarakat berbasis usaha hijau dan ekonomi kreatif.</p>",
|
||||
"kolaborator": "Universitas Warmadewa, Pengurus BUMDes Darmasaba"
|
||||
},
|
||||
{
|
||||
"id": "cmklzhfjb0000vnswml6z9zpl",
|
||||
"name": "Ekowisata dan Kuliner Berkelanjutan",
|
||||
"tahun": 2025,
|
||||
"slug": "Kolaborasi pengembangan ekowisata dan kuliner berbasis budaya",
|
||||
"deskripsi": "<p>Kegiatan yang melibatkan desa adat, BUMDes, UMKM, akademisi, dan pemerintah desa untuk mengembangkan ekowisata dan kuliner lokal berbasis keberlanjutan lingkungan serta potensi budaya setempat, sebagai wujud sinergi inovatif di Darmasaba.</p>",
|
||||
"kolaborator": "Desa Adat Darmasaba, BUMDes, UMKM lokal, Akademisi"
|
||||
}
|
||||
]
|
||||
17
prisma/data/inovasi/kolaborasi-inovasi/mitra-kolaborasi.json
Normal file
17
prisma/data/inovasi/kolaborasi-inovasi/mitra-kolaborasi.json
Normal file
@@ -0,0 +1,17 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkm1ziyi000dvnsweg8lp3f7",
|
||||
"name": "TP Posyandu Bali",
|
||||
"imageId": "cmkm1zis2000bvnsw85m6wdlf"
|
||||
},
|
||||
{
|
||||
"id": "cmkm1ziyi000dvnsweg8lq4g8",
|
||||
"name": "BRI Peduli",
|
||||
"imageId": "cmkm2dgif000evnswskk0dfo9"
|
||||
},
|
||||
{
|
||||
"id": "cmkm1ziyi000dvnsweg8lr5h9",
|
||||
"name": "Universitas Warmadewa (KKN-PMM)",
|
||||
"imageId": "cmkm2fzub000hvnswnvoytlzs"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq7ll1",
|
||||
"name": "Surat Keterangan Domisili Organisasi",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9876543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq7ll1"
|
||||
},
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq8mm2",
|
||||
"name": "Surat Keterangan Penghasilan",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9776543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq8mm2"
|
||||
},
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq9nn3",
|
||||
"name": "Surat Keterangan Tidak Mampu",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9676543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq9nn3"
|
||||
},
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq0oo4",
|
||||
"name": "Surat Keterangan Kelahiran",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9576543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq0oo4"
|
||||
},
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq1pp5",
|
||||
"name": "Surat Keterangan Usaha",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9476543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq1pp5"
|
||||
},
|
||||
{
|
||||
"id": "cmkkt91ma000004lb4dpq2qq6",
|
||||
"name": "Perizinan Berusaha OSS",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"nomorTelepon": "0361-9376543",
|
||||
"jenisLayananId": "dnllt91ma000004lb4dpq2qq6"
|
||||
}
|
||||
]
|
||||
32
prisma/data/inovasi/layanan-online-desa/jenis-layanan.json
Normal file
32
prisma/data/inovasi/layanan-online-desa/jenis-layanan.json
Normal file
@@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq7ll1",
|
||||
"nama": "Surat Keterangan Domisili Organisasi",
|
||||
"deskripsi": "Administrasi Online Surat Keterangan Domisili Organisasi"
|
||||
},
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq8mm2",
|
||||
"nama": "Surat Keterangan Penghasilan",
|
||||
"deskripsi": "Administrasi Online Surat Keterangan Penghasilan"
|
||||
},
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq9nn3",
|
||||
"nama": "Surat Keterangan Tidak Mampu",
|
||||
"deskripsi": "Administrasi Online Surat Keterangan Tidak Mampu"
|
||||
},
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq0oo4",
|
||||
"nama": "Surat Keterangan Kelahiran",
|
||||
"deskripsi": "Administrasi Online Surat Keterangan Kelahiran"
|
||||
},
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq1pp5",
|
||||
"nama": "Surat Keterangan Usaha",
|
||||
"deskripsi": "Administrasi Online Surat Keterangan Usaha"
|
||||
},
|
||||
{
|
||||
"id": "dnllt91ma000004lb4dpq2qq6",
|
||||
"nama": "Perizinan Berusaha OSS",
|
||||
"deskripsi": "Administrasi Online Perizinan Usaha Online Single Submission (OSS)"
|
||||
}
|
||||
]
|
||||
26
prisma/data/inovasi/layanan-online-desa/jenis-pengaduan.json
Normal file
26
prisma/data/inovasi/layanan-online-desa/jenis-pengaduan.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq7ll1",
|
||||
"nama": "Lingkungan"
|
||||
},
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq8mm2",
|
||||
"nama": "Ketertiban Umum"
|
||||
},
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq9nn3",
|
||||
"nama": "Kesehatan Masyarakat"
|
||||
},
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq0oo4",
|
||||
"nama": "Pendidikan"
|
||||
},
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq1pp5",
|
||||
"nama": "Pembangunan Infrastuktur"
|
||||
},
|
||||
{
|
||||
"id": "eommt91ma000004lb4dpq2qq6",
|
||||
"nama": "Perizinan Berusaha"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkkrxmub0004vni41cwyhid4",
|
||||
"name": "Nyoman Putra",
|
||||
"email": "nyoman.putra@example.com",
|
||||
"nomorTelepon": "081234567890",
|
||||
"nik": "3175011234567890",
|
||||
"judulPengaduan": "Permintaan Pemasangan Spanduk Larangan Bagi Hewan",
|
||||
"deskripsiPengaduan": "<p>Permintaan Pemasangan Spanduk Larangan Bagi Hewan</p>",
|
||||
"lokasiKejadian": "Banjar Darmasaba Tengah",
|
||||
"jenisPengaduanId": "eommt91ma000004lb4dpq7ll1",
|
||||
"imageId": "cmkkxep9l000evni4xkegbk72"
|
||||
},
|
||||
{
|
||||
"id": "cmkkrxmub0004vni41cwyhid5",
|
||||
"name": "I Made Sari",
|
||||
"email": "imade.sari@example.com",
|
||||
"nomorTelepon": "087654321098",
|
||||
"nik": "3175010987654321",
|
||||
"judulPengaduan": "Laporan Anjing Liar Sering Menyerang Warga",
|
||||
"deskripsiPengaduan": "<p>Laporan Anjing Liar Sering Menyerang Warga</p>",
|
||||
"lokasiKejadian": "Jl. Raya Darmasaba",
|
||||
"jenisPengaduanId": "eommt91ma000004lb4dpq8mm2",
|
||||
"imageId": "cmkkx9e38000bvni4azjd3u53"
|
||||
},
|
||||
{
|
||||
"id": "cmkkrxmub0004vni41cwyhid6",
|
||||
"name": "Ketut Widi",
|
||||
"email": "ketut.widi@example.com",
|
||||
"nomorTelepon": "085612347890",
|
||||
"nik": "3175011122334455",
|
||||
"judulPengaduan": "Pengelolaan Sampah Rumah Tangga Belum Efektif",
|
||||
"deskripsiPengaduan": "<p>Pengelolaan Sampah Rumah Tangga Belum Efektif</p>",
|
||||
"lokasiKejadian": "Banjar Bucu",
|
||||
"jenisPengaduanId": "eommt91ma000004lb4dpq7ll1",
|
||||
"imageId": "cmkky60sq0000vnjjc55k84d2"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi9frv",
|
||||
"name": "Pelatihan Pembuatan Eco-Enzyme",
|
||||
"slug": "Pelatihan pembuatan cairan eco-enzyme dari limbah organik rumah tangga",
|
||||
"deskripsi": "<p>Program ini mengajarkan masyarakat Desa Darmasaba cara membuat eco-enzyme dari limbah organik yang dapat digunakan sebagai pembersih alami, pupuk organik, dan produk ramah lingkungan untuk meningkatkan nilai tambah ekonomi lokal.</p>",
|
||||
"icon": "lingkunganSehat"
|
||||
},
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi0gsw",
|
||||
"name": "Green House dan Biopori Berkelanjutan",
|
||||
"slug": "Perancangan rumah kaca dan lubang biopori di TPS3R",
|
||||
"deskripsi": "<p>Program perancangan dan pembangunan green house di kawasan TPS3R Pudak Mesari serta pembuatan lubang biopori untuk pengelolaan sampah organik dan konservasi air yang ramah lingkungan sebagai bagian dari pengembangan ekonomi hijau desa.</p>",
|
||||
"icon": "lingkunganSehat"
|
||||
},
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi1htx",
|
||||
"name": "Ekowisata dan Eco-Kuliner Desa",
|
||||
"slug": "Pengembangan paket ekowisata dan kuliner berbasis potensi lokal",
|
||||
"deskripsi": "<p>Kolaborasi antara desa, BUMDes, dan akademisi untuk mengembangkan potensi ekowisata berkelanjutan serta produk kuliner khas desa dengan pendekatan pemasaran digital untuk memperkuat ekonomi kreatif dan pariwisata lokal.</p>",
|
||||
"icon": "ekowisata"
|
||||
},
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi2iuy",
|
||||
"name": "Sosialisasi Kewirausahaan",
|
||||
"slug": "Sosialisasi kewirausahaan bagi masyarakat desa",
|
||||
"deskripsi": "<p>Program ini memberikan pengetahuan dan motivasi kepada warga Darmasaba tentang kewirausahaan, pemasaran digital, pencatatan usaha, dan strategi pengembangan UMKM agar produk lokal lebih produktif dan bernilai ekonomi.</p>",
|
||||
"icon": "ekonomi"
|
||||
},
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi3jvz",
|
||||
"name": "E-Book Kuliner Lokal",
|
||||
"slug": "Publikasi e-book tentang kuliner khas Desa Darmasaba",
|
||||
"deskripsi": "<p>Produksi dan distribusi e-book yang mengangkat resep dan cerita kuliner khas Desa Darmasaba sebagai media edukatif dan promosi budaya pangan lokal yang kreatif serta bisa diperluas untuk pemasaran UMKM desa.</p>",
|
||||
"icon": "book"
|
||||
},
|
||||
{
|
||||
"id": "cmkkyux9x000104jo4gwi4kwa",
|
||||
"name": "Tes Kompetensi",
|
||||
"slug": "Program pemetaan minat dan keterampilan masyarakat untuk mendukung pengembangan potensi dan kesiapan kerja.",
|
||||
"deskripsi": "<p>Tes Kompetensi merupakan program untuk membantu masyarakat, khususnya generasi muda, dalam mengenali minat, bakat, dan keterampilan yang dimiliki. Hasil tes dapat menjadi dasar dalam perencanaan pelatihan, pengembangan potensi diri, serta kesiapan menghadapi dunia kerja dan wirausaha.</p>",
|
||||
"icon": "layananPublik"
|
||||
}
|
||||
]
|
||||
@@ -1,14 +1,14 @@
|
||||
[
|
||||
{
|
||||
"id": "cmh48wo9c0006qq09txnxusql",
|
||||
"id": "cmkp70zau0002vnu9o1jtpi1i",
|
||||
"judul": "Keamanan Rumah",
|
||||
"deskripsi": "<p><ul><li><p>Pastikan pintu dan jendela selalu terkunci saat meninggalkan rumah</p></li><li><p>Pasang lampu penerangan di halaman dan area sekitar rumah untuk mencegah tindak kejahatan.</p></li><li><p>Jangan mudah memberikan akses masuk ke orang yang tidak dikenal.</p></li></ul></p>",
|
||||
"imageId": "cmkccs50d0000vn2mfuk0d9dw"
|
||||
"imageId": "cmkp71pub0003vnu9ef60huuv"
|
||||
},
|
||||
{
|
||||
"id": "cmh48wo9c1117rr10txnxusql",
|
||||
"id": "cmkp71pzo0005vnu9p3n9646d",
|
||||
"judul": "Keamanan Lingkungan Tanggungjawab Bersama",
|
||||
"deskripsi": "<p>Pemerintah Desa Darmasaba melaksanakan sosialisasi dan pembinaan tentang keamanan dan ketertiban lingkungan kepada warga Perumahan Darmasaba Permai. Warga diajak berperan aktif dalam menjaga keamanan lingkungan serta mendukung penyediaan lampu penerangan jalan untuk mencegah tindak kriminal dan kecelakaan. Bhabinkamtibmas dan Babinsa turut memberikan materi keamanan dan ketertiban kepada warga, menekankan pentingnya partisipasi masyarakat dalam menjaga keamanan desa.</p>",
|
||||
"imageId": "cmkccyh7t0003vn2mjdrqtuu0"
|
||||
"imageId": "cmkp70z5g0000vnu9b0aieem8"
|
||||
}
|
||||
]
|
||||
@@ -4,27 +4,27 @@
|
||||
"name": "Desa Darmasaba Raih Juara 1 Lomba Desa Tingkat Provinsi Bali Tahun 2025",
|
||||
"deskripsi": "<p>Pemerintah Desa Darmasaba meraih prestasi gemilang dengan menyabet Juara 1 Lomba Desa Tingkat Provinsi Bali Tahun 2025 dalam Peringatan Hari Jadi Pemerintah Provinsi Bali ke-67. Inovasi pelayanan publik dan sinergi masyarakat menjadi kunci keberhasilan.</p>",
|
||||
"kategoriId": "cmdwrp0pr0002vnd35w6nkjh0",
|
||||
"imageId": "cmkamki230003vntzg25voz53"
|
||||
"imageName": "_CIAQk1Yem-_6LFjrkmVg-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdwrzs740008vnd329ysez5x",
|
||||
"name": "Desa Darmasaba Raih Juara 1 Lomba Desa Tingkat Kabupaten Badung Tahun 2025",
|
||||
"deskripsi": "<p>Desa Darmasaba berhasil meraih Juara 1 Lomba Desa Tingkat Kabupaten Badung Tahun 2025 yang diserahkan langsung oleh Bupati Badung dalam rangka memperingati HUT RI ke-80. Prestasi ini menjadi simbol kerja keras dan inovasi desa.</p>",
|
||||
"kategoriId": "cmdwrp0pr0002vnd35w6nkjh0",
|
||||
"imageId": "cmkamkb150002vntzklhz9ryx"
|
||||
"imageName": "pxpQFGBkTRpFOwJFTwjbD-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdwrrxkh0005vnd3p5rxkiev",
|
||||
"name": "TPS3R Pudak Mesari Desa Darmasaba Raih Juara 2 dalam Kompetisi TPS3R Kabupaten Badung",
|
||||
"deskripsi": "<p>TPS3R Pudak Mesari Desa Darmasaba meraih Juara 2 dalam Kompetisi TPS3R tingkat Kabupaten Badung pada acara HUT Mangupura ke-16 sebagai wujud komitmen pengelolaan sampah berbasis masyarakat.</p>",
|
||||
"kategoriId": "cmdwrp0pr0002vnd35w6nkjh0",
|
||||
"imageId": "cmkamk2cf0001vntzjg4rzqep"
|
||||
"imageName": "3rshaPxCgk5unArWbKPpk-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk3nxfkd0005vn9bcw8d10sh",
|
||||
"name": "Keluarga Sadar Hukum Desa Darmasaba Raih Prestasi Gemilang (Juara 3)",
|
||||
"deskripsi": "<p>KADARKUM Desa Darmasaba berhasil meraih Juara 3 dalam Lomba Keluarga Sadar Hukum Kabupaten Badung tahun 2024, bukti semangat kolaborasi masyarakat dengan perangkat desa dalam pendidikan hukum.</p>",
|
||||
"kategoriId": "cmdwrp0pr0002vnd35w6nkjh0",
|
||||
"imageId": "cmkamji130000vntz3loca9q2"
|
||||
"imageName": "D4za5fHh_y92Bj9qZkp5j-mobile.webp"
|
||||
}
|
||||
]
|
||||
@@ -3,24 +3,24 @@
|
||||
"id": "cmds9023u0008vnbe3oxmhwyf",
|
||||
"name": "Desa Darmasaba",
|
||||
"iconUrl": "https://www.youtube.com/channel/UCtPw9WOQO7d2HIKzKgel4Xg",
|
||||
"imageId": "cmk2cgqgm0003vn96jun52pik"
|
||||
"imageName": "q1G995W7cLkC_qquLTlKN-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmds90oul000bvnbe2bqkptoi",
|
||||
"name": "Pemerintah Desa Darmasaba",
|
||||
"iconUrl": "https://www.facebook.com/DarmasabaDesaku",
|
||||
"imageId": "cmk2cmr000006vn96qepq6gvl"
|
||||
"imageName": "I6mlQ4nRmPX26gm79C_rM-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmds91i4e000evnbe8gtf1gub",
|
||||
"name": "ddarmasaba",
|
||||
"iconUrl": "https://www.instagram.com/ddarmasaba/",
|
||||
"imageId": "cmk2cpeba0009vn966jcrpf3u"
|
||||
"imageName": "WArLC_yvU33MjoqEnQeQ1-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmds92de5000hvnbemlu6sq5x",
|
||||
"name": "desa.darmasaba",
|
||||
"iconUrl": "https://www.tiktok.com/@desa.darmasaba?is_from_webapp=1&sender_device=pc",
|
||||
"imageId": "cmk2crcl1000cvn96j8pmgmo5"
|
||||
"imageName": "D3RPbNiaNSCjacLjeR_qO-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
"id": "edit",
|
||||
"name": "I.B Surya Prabhawa Manuaba, S.H., M.H.",
|
||||
"position": "Perbekel Darmasaba periode 2021-2027",
|
||||
"imageId": "cmk2a2dl6001nvngck1n0k8qc"
|
||||
"imageName": "Eqlrr1W-pK8ShMGqgPGL3-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -4,55 +4,55 @@
|
||||
"name": "Bares",
|
||||
"description": "<p>BARES (Darmasaba Recycling Waste Stock/Exchange) adalah Bursa Sampah yang merupakan sebuah sistem inovatif untuk mengelola dan menukar sampah daur ulang menjadi nilai ekonomis melalui TPS3R Pudak Mesari, dengan tujuan memberdayakan masyarakat dan menjaga kebersihan lingkungan, menjadikannya bagian dari upaya lebih besar seperti program desa pintar (smart village) dan pengelolaan sampah terintegrasi.</p>",
|
||||
"link": "https://darmasaba.desa.id/berita/56722-bares#:~:text=Sampah%20jadi%20uang%20nie%20Semeton,masing%20banjar%20se%2DDesa%20Darmasaba.",
|
||||
"imageId" : "cmk20mg320000vnevxy0k73fr"
|
||||
"imageName" : "thpgPSJkBxUIRajZt3AVo-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr76nqk0008vn5rdddvcxnr",
|
||||
"name": "Bicara Darmasaba",
|
||||
"description": "<p>Bicara Darmasaba adalah program ruang dialog terbuka yang digagas Pemerintah Desa Darmasaba sebagai forum strategis untuk menggali ide, menyampaikan aspirasi masyarakat, serta merangkai aksi nyata dalam menyelesaikan persoalan desa, seperti pengelolaan sampah. Kegiatan ini diselenggarakan secara berkala dengan pendekatan partisipatif dan ditayangkan secara live streaming agar transparan dan melibatkan banyak pihak, sehingga mendukung tata kelola desa yang responsif terhadap kebutuhan warga.</p>",
|
||||
"link": "https://badungkab.go.id/kab/berita/67159-bicara-darmasaba-bahas-berbagai-persoalan-warga-didorong-berani-speak-up-sampaikan-aspirasi-dan-cari-solusi-nyata",
|
||||
"imageId" : "cmk20nqmu0001vnevfte29rk0"
|
||||
"imageName" : "ubna9N6r7RgVWN5plO5mq-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr755pf0005vn5rp8tyuubw",
|
||||
"name": "Dmangan",
|
||||
"description": "<p>Dmangan (Darmasaba Aman Pangan) adalah program inovasi Desa Darmasaba yang fokus pada ketahanan pangan masyarakat desa melalui pengembangan produksi hasil pangan lokal, peningkatan kemandirian pangan, serta pembinaan dan pemberdayaan warga dalam praktik pertanian dan pangan berkelanjutan.</p>",
|
||||
"link": "https://darmasaba.desa.id/berita/51787-desa-darmasaba-juara-1-lomba-desa-pangan-aman-provinsi-bali-tahun-2023#:~:text=Salah%20satu%20program%20inovasi%20Pemdes%20Darmasaba%20yaitu,Darmasaba%20dan%20seluruh%20stakeholder%20terkait%20yang%20telah",
|
||||
"imageId" : "cmk20nyen0002vnevd0hfr3u8"
|
||||
"imageName" : "y4yaE4XdUP1TSUGhWPW9h-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmk228ust0009vnev5p8i377o",
|
||||
"name": "Davest",
|
||||
"description": "<p>DAVEST (Darmasaba Investment) merupakan program inovasi Desa Darmasaba yang bertujuan mempromosikan potensi investasi desa secara terintegrasi melalui media digital dan pendampingan langsung. Program ini menjadi sarana penghubung antara pemerintah desa, pelaku usaha, dan investor dalam rangka mendorong pertumbuhan ekonomi desa yang berkelanjutan.</p><p>DAVEST menyajikan informasi potensi unggulan desa seperti sektor UMKM, pariwisata, ekonomi kreatif, serta peluang investasi berbasis sumber daya lokal dengan prinsip transparansi dan kemudahan akses informasi.</p><p>Di tahun 2024 ini Davest (Darmasaba Village Festival) akan diadakan lagi, dengan berbagai kegiatan pemerdayaan, edukasi dan hiburan yang tentunya lebih waahhhh dari dua tahun lalu. Untuk memantapkan hal tersebut, Pemdes Darmasaba melakukan rapat koordinasi (rakor) Davest 2024 yang dipimpin langsung oleh Perbekel Darmasaba I. B. Surya Prabhawa Manuaba, S.H.,M.H. pada hari Senin (22/1/2024) bertempat di Ruang Shanti Gosana Kantor Perbekel Darmasaba.</p><hr><h3>Tujuan Program</h3><ul><li><p>Meningkatkan daya tarik investasi di Desa Darmasaba</p></li><li><p>Mempromosikan potensi unggulan desa secara profesional</p></li><li><p>Mendorong pertumbuhan ekonomi dan penciptaan lapangan kerja</p></li><li><p>Mendukung visi Desa Darmasaba sebagai desa inovatif dan berdaya saing</p></li></ul><hr><h3>Sasaran Program</h3><ul><li><p>Calon investor lokal dan regional</p></li><li><p>Pelaku UMKM dan kelompok usaha desa</p></li><li><p>Masyarakat Desa Darmasaba</p></li></ul><hr><h3>Bentuk Inovasi</h3><ul><li><p>Inovasi ekonomi desa</p></li><li><p>Inovasi digital</p></li><li><p>Inovasi tata kelola pelayanan investasi</p></li></ul><hr><h3>Ruang Lingkup Kegiatan</h3><ul><li><p>Penyusunan profil potensi investasi desa</p></li><li><p>Digitalisasi informasi investasi desa</p></li><li><p>Promosi peluang investasi melalui media online</p></li><li><p>Fasilitasi komunikasi antara investor dan desa</p></li><li><p>Pendampingan awal investasi berbasis desa</p></li></ul>",
|
||||
"link": "https://darmasaba.desa.id/berita/55862-rakor-davest-2024",
|
||||
"imageId" : "cmk228urs0007vnevi5b66bqn"
|
||||
"imageName" : "Z4i2RRnnlHq2iWj94ldyo-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr7ftob000mvn5rfhgdtg8v",
|
||||
"name": "GM",
|
||||
"description": "<p>Galah Melah (Gerak dan Langkah Memilah Sampah) adalah program inovasi pengelolaan sampah yang dikembangkan oleh Pemerintah Desa Darmasaba melalui TPS3R Pudak Mesari, dengan fokus pada praktik pemisahan sampah dari sumbernya (di rumah, banjar, maupun fasilitas umum).</p>",
|
||||
"link": "https://mcinews.id/2025/09/12/serius-tangani-sampah-desa-darmasaba-terapkan-inovasi-dan-osaki-composting-system-di-tps-3r-pudak-mesari-dari-2023",
|
||||
"imageId" : "cmk20o7mf0003vnevohrksm1d"
|
||||
"imageName" : "Vr7CoaYDpk2dIkHx9PxRj-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr7glue000pvn5r6onzslju",
|
||||
"name": "Inovasi Desa Darmasaba",
|
||||
"description": "<p>Inovasi Desa Darmasaba adalah kumpulan program inovatif yang dikembangkan oleh Pemerintah Desa Darmasaba untuk memperkuat penyelenggaraan pemerintahan desa, pemberdayaan masyarakat, pengelolaan lingkungan, serta peningkatan kualitas sosial-ekonomi dan budaya desa.</p>",
|
||||
"link": "https://mcinews.id/2025/09/11/inovasi-desa-darmasaba-lanjutkan-perjuangan-ke-tingkat-nasional-dan-diakui-negara-tetangga",
|
||||
"imageId" : "cmk20of8m0004vnev9ujy5o0l"
|
||||
"imageName" : "ceoB_sg-HOzljN8j_2nZA-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr7dlnk000hvn5r9lur3z35",
|
||||
"name": "PDKT",
|
||||
"description": "<p>PDKT (Perangkat Desa Kuat Teknologi) merupakan program inovasi Desa Darmasaba yang dirancang untuk menguatkan kapasitas dan kompetensi perangkat desa dalam memanfaatkan teknologi informasi dan komunikasi guna mendukung tata kelola pemerintahan desa yang modern, transparan, cepat, dan responsif.</p>",
|
||||
"link": "https://darmasaba.desa.id/berita/67168-desa-darmasaba-masuk-5-besar-nasional-dalam-ajang-pemerintah-desa-dan-kelurahan-award-2025",
|
||||
"imageId" : "cmk20omzq0005vnevgi6f4edu"
|
||||
"imageName" : "vOy5YVUXfHXfiFOHylIN7-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdr7bxtp000evn5rmy85wihx",
|
||||
"name": "Sajjana Dharma Raksaka",
|
||||
"description": "<p>Sajjana Dharma Raksaka adalah program inovasi Desa Darmasaba yang bertujuan untuk memperkuat akses perlindungan hukum dan pendampingan hukum non-litigasi bagi masyarakat desa. Melalui inovasi ini, desa menyediakan layanan pendampingan, mediasi, dan bantuan dalam menyelesaikan persoalan hukum secara bijaksana, humanis, dan berperspektif keadilan sosial</p>",
|
||||
"link": "https://ppid.badungkab.go.id/storage/dokumen/5RS9dldGkrgzMQq6bKdZsqsVRHI8gffWv4PGfb3r.pdf",
|
||||
"imageId" : "cmk20pf3d0006vnev3mkoqpyy"
|
||||
"imageName" : "gE_qcqIbY0mqI6FV9V4CL-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -3,109 +3,109 @@
|
||||
"id": "cmdsjzdl30002vneknuvo4irv",
|
||||
"name": "Desa Tanpa Kemiskinan",
|
||||
"jumlah": "52.62",
|
||||
"imageId": "cmk3grkby0000vnxwblul7viy"
|
||||
"imageName": "kxpXwgyx74-HkAGXML7Hv-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskargd0005vnek0mu2ofk9",
|
||||
"name": "Desa Tanpa Kelaparan",
|
||||
"jumlah": "35.75",
|
||||
"imageId": "cmk3h87lc0001vnxwxc5sn0xc"
|
||||
"imageName": "D0DEORcSkSWXEpY29mh_x-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskbvl0008vnek5dmieatb",
|
||||
"name": "Desa Sehat Dan Sejahtera",
|
||||
"jumlah": "77.37",
|
||||
"imageId": "cmk3haaaf0002vnxwy5w07z3n"
|
||||
"imageName": "jrUol97rV5whAUtpljbyF-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskcx91000bvneko7tuaoqa",
|
||||
"name": "Pendidikan Desa Berkualitas",
|
||||
"jumlah": "34.11",
|
||||
"imageId": "cmk3hdeeg0003vnxwezx6zu99"
|
||||
"imageName": "Kh8RTS4ac1bG4ZXy3L2-y-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskjare000evnek1hglu0x8",
|
||||
"name": "Keterlibatan Perempuan Desa",
|
||||
"jumlah": "45.70",
|
||||
"imageId": "cmk3hg3n20004vnxwxofi5ylm"
|
||||
"imageName": "8bAk-cuzJ73W1dgj4lVqM-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskqcpc0002vnvnqjkqgm92",
|
||||
"name": "Desa Layak Air Bersih Dan Sanitasi",
|
||||
"jumlah": "48.54",
|
||||
"imageId": "cmk3hjdb10005vnxwjtgd6g9g"
|
||||
"imageName": "k4zOPRqxi6PS0W_rHgiVp-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsktl3x0005vnvne15seefw",
|
||||
"name": "Desa Berenergi Bersih Dan Terbarukan",
|
||||
"jumlah": "99.64",
|
||||
"imageId": "cmk3hlu6l0006vnxw9wtsaq4w"
|
||||
"imageName": "txtX9hDmrHrRIkmpyQ6rp-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskuncw0008vnvcsdqoeog",
|
||||
"name": "Pertumbuhan Ekonomi Desa Merata",
|
||||
"jumlah": "40.92",
|
||||
"imageId": "cmk3hp5ht0007vnxwakvsa7ld"
|
||||
"imageName": "Yx7ruGLJ_0QtD5RCvYhEC-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskw83j000bvvn9szqrea6",
|
||||
"name": "Infrastruktur Dan Inovasi Desa Sesuai Kebutuhan",
|
||||
"jumlah": "35.37",
|
||||
"imageId": "cmk3hrkmp0008vnxwijncfayo"
|
||||
"imageName": "j1kZLRY4HLFBxdRt24XQw-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskwrq7000envnvy0c5nbgf",
|
||||
"name": "Desa Tanpa Kesenjangan",
|
||||
"jumlah": "35.47",
|
||||
"imageId": "cmk3hu2lh0009vnxw82qb8l6h"
|
||||
"imageName": "Iqx5__9VtAQiScvvGb21S-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskxivx000hnvnvsx520gv1",
|
||||
"name": "Kawasan Pemukiman Desa Aman Dan Nyaman",
|
||||
"jumlah": "40.35",
|
||||
"imageId": "cmk3hwtsm000avnxwfug41t9x"
|
||||
"imageName": "Eelib_Lr7GYv0nPj3XHVo-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdskzg4c000kvnnkiv61gkt",
|
||||
"name": "Konsumsi Dan Produksi Desa Sadar Lingkungan",
|
||||
"jumlah": "16.67",
|
||||
"imageId": "cmk3i09sa000bvnxw95elyupj"
|
||||
"imageName": "6MzAfXZyjsSTOkckqYJug-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl07lk000nvnnvnrepsdy5m",
|
||||
"name": "Desa Tanggap Perubahan Iklim",
|
||||
"jumlah": "0.00",
|
||||
"imageId": "cmk3i2q07000cvnxwkjxqld0c"
|
||||
"imageName": "f05zcftt1hdvkhCeN7wxk-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl10rq000qvnvnlch9c1yv",
|
||||
"name": "Desa Peduli Lingkungan Laut",
|
||||
"jumlah": "50.00",
|
||||
"imageId": "cmk3i53wr000dvnxw074gyuar"
|
||||
"imageName": "3tuC1Bq5WvH7QEBHQVDaM-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl1mc2000tvnvn357n8usi",
|
||||
"name": "Desa Peduli Lingkungan Darat",
|
||||
"jumlah": "0.00",
|
||||
"imageId": "cmk3i7krz000evnxwe4uturyn"
|
||||
"imageName": "oTKQeqAydsV5fXelI0S7Y-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl2bx3000wvnvntshi4gnj",
|
||||
"name": "Desa Damai Berkeadilan",
|
||||
"jumlah": "78.65",
|
||||
"imageId": "cmk3ib07w000fvnxwsnb1hga3"
|
||||
"imageName": "16sdgs.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl2yz3000zvnvnmf60ok7q",
|
||||
"name": "Kemitraan Untuk Pembangunan Desa",
|
||||
"jumlah": "20.00",
|
||||
"imageId": "cmk3idx0t000gvnxw16urbiw5"
|
||||
"imageName": "L8jv3Wvj0GwsQgS7JSJQO-mobile.webp"
|
||||
},
|
||||
{
|
||||
"id": "cmdsl492h0012vnvnmckm3n2x",
|
||||
"name": "Kelembagaan Desa Dinamis Dan Budaya Desa Adaptif",
|
||||
"jumlah": "47.22",
|
||||
"imageId": "cmk3ig4ho000hvnxwewlheju3"
|
||||
"imageName": "18sdgs.webp"
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps1eg8",
|
||||
"name": "Pelaksanaan Kebersihan Lingkungan Desa",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Kegiatan pelaksanaan kebersihan lingkungan desa Darmasaba untuk meningkatkan kualitas lingkungan dan kesehatan masyarakat.",
|
||||
"icon": "lingkunganSehat"
|
||||
},
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps2fh9",
|
||||
"name": "Penataan Taman Telajakan",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Program penataan taman telajakan sebagai upaya memperindah lingkungan desa serta ruang terbuka publik di desa Darmasaba.",
|
||||
"icon": "lingkunganSehat"
|
||||
},
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps3gi0",
|
||||
"name": "Pelatihan/Sosialisasi Peduli Lingkungan",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Pelatihan dan sosialisasi penyuluhan tentang kepedulian lingkungan hidup dan kehutanan bagi masyarakat.",
|
||||
"icon": "pelatihan"
|
||||
},
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps4hj2",
|
||||
"name": "Pemanfaatan Pekarangan Rumah",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Program pemanfaatan lingkungan pekarangan rumah menjadi produktif untuk mendukung ketahanan pangan keluarga.",
|
||||
"icon": "sumberOksigen"
|
||||
},
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps5ik3",
|
||||
"name": "Pengelolaan Daerah Aliran Sungai",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Kegiatan pengelolaan dan pemeliharaan daerah aliran sungai untuk menjaga kualitas sumber air dan mencegah erosi.",
|
||||
"icon": "air"
|
||||
},
|
||||
{
|
||||
"id": "bnlneq3zg0000vn8issps6jl4",
|
||||
"name": "Pengelolaan Sampah Desa (Inovasi CINtA)",
|
||||
"jumlah": "1 paket kegiatan",
|
||||
"deskripsi": "Program inovatif cara indah tangani sampah (CINtA) di desa Darmasaba termasuk TPS3R dan pemilahan sampah berbasis rumah tangga.",
|
||||
"icon": "sampah"
|
||||
}
|
||||
]
|
||||
35
prisma/data/lingkungan/gotong-royong/gotong-royong.json
Normal file
35
prisma/data/lingkungan/gotong-royong/gotong-royong.json
Normal file
@@ -0,0 +1,35 @@
|
||||
[
|
||||
{
|
||||
"id": "ee38b9ee-88ca-4a11-8fa0-7d407ea7e774",
|
||||
"judul": "Gotong Royong PKK Mareresik Pura Desa dan Pura Dalem",
|
||||
"deskripsiSingkat": "TP PKK Desa Darmasaba melaksanakan gotong royong mareresik di Pura Desa dan Pura Dalem Desa Adat Tegal.",
|
||||
"deskripsiLengkap": "Pada tanggal 28 Januari 2024, TP PKK Desa Darmasaba bersama Ketua Kelompok PKK Banjar se-Desa Darmasaba melakukan kegiatan gotong royong membersihkan area Pura Desa dan Pura Dalem untuk mendukung kebersihan dan kesehatan lingkungan desa.",
|
||||
"tanggal": "2024-01-28T00:00:00.000Z",
|
||||
"lokasi": "Pura Desa dan Pura Dalem, Desa Adat Tegal, Desa Darmasaba, Badung",
|
||||
"partisipan": 30,
|
||||
"imageId": "cmknb59md0000vnmam828iuzt",
|
||||
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
|
||||
},
|
||||
{
|
||||
"id": "dead9da0-e2e2-494c-9f88-721f2c3aa62a",
|
||||
"judul": "Mareresik (Gotong Royong)",
|
||||
"deskripsiSingkat": "Kegiatan mareresik (gotong royong) yang dilaksanakan di lingkungan desa Darmasaba.",
|
||||
"deskripsiLengkap": "Mareresik (gotong royong) dilakukan pada tanggal 17 November 2023 oleh warga Desa Darmasaba sebagai bagian dari tradisi membersihkan dan menjaga lingkungan desa secara kolektif.",
|
||||
"tanggal": "2023-11-17T00:00:00.000Z",
|
||||
"lokasi": "Desa Darmasaba, Badung",
|
||||
"partisipan": 25,
|
||||
"imageId": "cmknbp3vd0001vnmarjz542o7",
|
||||
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
|
||||
},
|
||||
{
|
||||
"id": "5186e23b-28a6-4f64-89b8-43a35e5048a5",
|
||||
"judul": "Gotong Royong dan Rapat Rutin TP PKK Desa Darmasaba",
|
||||
"deskripsiSingkat": "Gotong royong bersama TP PKK Desa Darmasaba di Pura Dalem Kangin Desa Adat Tegal sekaligus rapat rutin.",
|
||||
"deskripsiLengkap": "Pada tanggal 26 Mei 2022, TP PKK Desa Darmasaba bersama anggota se-Desa Darmasaba melaksanakan gotong royong mereresik Pura Dalem Kangin Desa Adat Tegal dan dilanjutkan dengan rapat rutin TP PKK sebagai wujud semangat kerja bersama dan kebersamaan sosial.",
|
||||
"tanggal": "2022-05-26T00:00:00.000Z",
|
||||
"lokasi": "Pura Dalem Kangin, Desa Adat Tegal, Desa Darmasaba, Badung",
|
||||
"partisipan": 28,
|
||||
"imageId": "cmknbrj4r0002vnmantw9rn0l",
|
||||
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
|
||||
}
|
||||
]
|
||||
@@ -1,6 +1,6 @@
|
||||
[
|
||||
{ "nama": "Kebersihan" },
|
||||
{ "nama": "Infrastruktur" },
|
||||
{ "nama": "Sosial" },
|
||||
{ "nama": "Lingkungan" }
|
||||
]
|
||||
{ "id": "cmknan39v000004l8eiql816o", "nama": "Kebersihan" },
|
||||
{ "id": "cmknan39v000004l8eiql927p", "nama": "Infrastruktur" },
|
||||
{ "id": "cmknan39v000004l8eiql038q", "nama": "Sosial" },
|
||||
{ "id": "cmknan39v000004l8eiql149r", "nama": "Lingkungan" }
|
||||
]
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkm8z5v70000vnrmu60qyd7b",
|
||||
"name": "TPS 3R Pudak Mesari",
|
||||
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali 80352",
|
||||
"namaTempatMaps": "TPS 3R Pudak Mesari",
|
||||
"linkPetunjukArah": "https://www.google.com/maps/dir/?api=1&destination=-8.5680,115.2040",
|
||||
"lat": -8.5680,
|
||||
"lng": 115.2040
|
||||
},
|
||||
{
|
||||
"id": "dummy0000000000000000000001",
|
||||
"name": "Bank Sampah Darmasaba Mandiri",
|
||||
"alamat": "Banjar Darmasaba Tengah, Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||
"namaTempatMaps": "Bank Sampah Darmasaba Mandiri",
|
||||
"linkPetunjukArah": "https://www.google.com/maps/dir/?api=1&destination=-8.5670,115.2000",
|
||||
"lat": -8.5670,
|
||||
"lng": 115.2000
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkkshcox000504l88lp54coc",
|
||||
"name": "Pilah sampah sesuai jenisnya",
|
||||
"icon": "trash"
|
||||
},
|
||||
{
|
||||
"id": "cmkkshcox000504l99mq65dpd",
|
||||
"name": "Bawa sampah ke Bank Sampah",
|
||||
"icon": "truck"
|
||||
},
|
||||
{
|
||||
"id": "cmkkshcox000504l00nr76eqe",
|
||||
"name": "Timbang sampah di Bank Sampah",
|
||||
"icon": "scale"
|
||||
},
|
||||
{
|
||||
"id": "cmkkshcox000504l11os87frf",
|
||||
"name": "Catat hasil timbangan di buku tabungan",
|
||||
"icon": "clipboard"
|
||||
},
|
||||
{
|
||||
"id": "cmkkshcox000504l22pt98gsg",
|
||||
"name": "Sampah didaur ulang oleh petugas Bank Sampah",
|
||||
"icon": "sampah"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkmdp3zg0000vn8issps1eg8",
|
||||
"name": "Penghijauan Desa Darmasaba",
|
||||
"judul": "Program Penghijauan Lingkungan",
|
||||
"deskripsi": "<p>Program penghijauan desa Darmasaba bertujuan menanam pohon di area publik dan pinggiran jalan desa sebagai upaya meningkatkan kualitas lingkungan, menyerap karbon, dan memperindah desa.</p>",
|
||||
"icon": "pohon"
|
||||
},
|
||||
{
|
||||
"id": "cmkmdp3zg0000vn8isspt2fh9",
|
||||
"name": "Komunitas Tanam Pohon",
|
||||
"judul": "Gerakan Komunitas Tanam Pohon",
|
||||
"deskripsi": "<p>Pelibatan warga desa dalam kegiatan rutin penanaman pohon di area perbukitan dan ruang terbuka hijau untuk meningkatkan kesadaran lingkungan dan mengurangi erosi.</p>",
|
||||
"icon": "pohon"
|
||||
},
|
||||
{
|
||||
"id": "cmkmdp3zg0000vn8isspu3gi0",
|
||||
"name": "Taman Hijau Bersama",
|
||||
"judul": "Pembangunan Taman Hijau Desa",
|
||||
"deskripsi": "<p>Pembangunan taman hijau di beberapa titik strategis desa, melibatkan banjar adat dan kelompok pemuda untuk menciptakan ruang publik yang nyaman dan ramah lingkungan.</p>",
|
||||
"icon": "pohon"
|
||||
}
|
||||
]
|
||||
22
prisma/data/pendidikan/data-pendidikan/data-pendidikan.json
Normal file
22
prisma/data/pendidikan/data-pendidikan/data-pendidikan.json
Normal file
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkqmqbv30000vn84kf0ogf61",
|
||||
"name": "TK",
|
||||
"jumlah": "120"
|
||||
},
|
||||
{
|
||||
"id": "cmkqmr20h0001vn84jxtuukfk",
|
||||
"name": "SD",
|
||||
"jumlah": "874"
|
||||
},
|
||||
{
|
||||
"id": "cmkqmshcx0002vn84ufnz9mue",
|
||||
"name": "SMP",
|
||||
"jumlah": "50"
|
||||
},
|
||||
{
|
||||
"id": "cmkqmsuoc0003vn84glk1d0rc",
|
||||
"name": "SMA",
|
||||
"jumlah": "862"
|
||||
}
|
||||
]
|
||||
97
prisma/data/pendidikan/info-sekolah/lembaga.json
Normal file
97
prisma/data/pendidikan/info-sekolah/lembaga.json
Normal file
@@ -0,0 +1,97 @@
|
||||
[
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd200",
|
||||
"nama": "TK Widya Kumara",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc301"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd202",
|
||||
"nama": "TK Widya Sari",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc301"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd203",
|
||||
"nama": "TK Kuntala Dewi I",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc301"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd204",
|
||||
"nama": "TK Widya Kumarayasa",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc301"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd205",
|
||||
"nama": "TK Dewi Ganadwati",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc301"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd400",
|
||||
"nama": "SD No. 1 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd300",
|
||||
"nama": "SD No. 2 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd401",
|
||||
"nama": "SD No. 3 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd402",
|
||||
"nama": "SD No. 4 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd403",
|
||||
"nama": "SD No. 5 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd404",
|
||||
"nama": "SD No. 6 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd405",
|
||||
"nama": "SD No. 7 Darmasaba",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc302"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd406",
|
||||
"nama": "SMP Negeri 1 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc303"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd407",
|
||||
"nama": "SMP Negeri 2 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc303"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd408",
|
||||
"nama": "SMP Negeri 3 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc303"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd409",
|
||||
"nama": "SMP Negeri 4 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc303"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd410",
|
||||
"nama": "SMP Negeri 5 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc303"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd411",
|
||||
"nama": "SMA Negeri 1 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc304"
|
||||
},
|
||||
{
|
||||
"id": "cmghqwjs4000404l8c6vwd412",
|
||||
"nama": "SMA Negeri 2 Abiansemal",
|
||||
"jenjangId": "cmghqwjs4000404l8c5uvc304"
|
||||
}
|
||||
]
|
||||
967
prisma/data/pendidikan/info-sekolah/pengajar.json
Normal file
967
prisma/data/pendidikan/info-sekolah/pengajar.json
Normal file
@@ -0,0 +1,967 @@
|
||||
[
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3arm",
|
||||
"nama": "I Kadek Ariyasa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3brm",
|
||||
"nama": "Ni Luh Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3crm",
|
||||
"nama": "I Made Dharma Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3drm",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3erm",
|
||||
"nama": "I Komang Aditya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3frm",
|
||||
"nama": "Ni Made Intan Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3grm",
|
||||
"nama": "I Putu Bayu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3hrm",
|
||||
"nama": "Ni Ketut Sri Wahyuni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3irm",
|
||||
"nama": "I Nyoman Yoga Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "dnkowzpeu000004l7exka3jrm",
|
||||
"nama": "Ni Komang Ratna Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z5r",
|
||||
"nama": "I Made Satria",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z1r",
|
||||
"nama": "Ni Luh Putri Ayu",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z2r",
|
||||
"nama": "I Kadek Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z3r",
|
||||
"nama": "Ni Made Rani Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z4r",
|
||||
"nama": "I Komang Yuda Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z5r",
|
||||
"nama": "Ni Kadek Ayu Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z6r",
|
||||
"nama": "I Putu Ardi Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z7r",
|
||||
"nama": "Ni Ketut Melati",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z8r",
|
||||
"nama": "I Nyoman Agung",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "dnkox31m7000004lagpwk9z9r",
|
||||
"nama": "Ni Komang Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67yy",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67zz",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67aa",
|
||||
"nama": "I Komang Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67bb",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67cc",
|
||||
"nama": "I Putu Gede Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67dd",
|
||||
"nama": "Ni Made Cahya Utami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67ee",
|
||||
"nama": "I Nyoman Aditya Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67ff",
|
||||
"nama": "Ni Komang Ratna Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67gg",
|
||||
"nama": "I Kadek Bima Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "dnkox64cu000104la7mge67hh",
|
||||
"nama": "Ni Putu Ayu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pag",
|
||||
"nama": "I Made Yoga Wirawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pbg",
|
||||
"nama": "Ni Luh Desi Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pcg",
|
||||
"nama": "I Komang Putra Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pdg",
|
||||
"nama": "Ni Kadek Intan Paramitha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1peg",
|
||||
"nama": "I Putu Adi Wicaksana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pfg",
|
||||
"nama": "Ni Made Ayu Kirana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1phg",
|
||||
"nama": "I Nyoman Bayu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pih",
|
||||
"nama": "Ni Komang Sri Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pjh",
|
||||
"nama": "I Kadek Rama Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pjk",
|
||||
"nama": "Ni Putu Diah Anggraini",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzg",
|
||||
"nama": "I Made Krisna Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzh",
|
||||
"nama": "Ni Luh Ayu Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzi",
|
||||
"nama": "I Komang Yuda Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzj",
|
||||
"nama": "Ni Kadek Putri Anjani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzk",
|
||||
"nama": "I Putu Surya Adi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzl",
|
||||
"nama": "Ni Made Ayu Cahyani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzm",
|
||||
"nama": "I Nyoman Artha Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzn",
|
||||
"nama": "Ni Komang Sinta Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzo",
|
||||
"nama": "I Kadek Gede Pranaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "dnkox9520000204la1ans1pzp",
|
||||
"nama": "Ni Putu Ratih Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5a",
|
||||
"nama": "I Made Arya Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5b",
|
||||
"nama": "I Nyoman Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5c",
|
||||
"nama": "I Kadek Surya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5d",
|
||||
"nama": "I Komang Aditya Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5e",
|
||||
"nama": "Ni Luh Putri Ayu",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5f",
|
||||
"nama": "Ni Made Intan Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5g",
|
||||
"nama": "I Gede Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5h",
|
||||
"nama": "Ni Kadek Sri Wahyuni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5i",
|
||||
"nama": "I Putu Andika Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "dnkoxzl8u000704la0jla6y5j",
|
||||
"nama": "Ni Komang Diah Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq1",
|
||||
"nama": "I Made Bima Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq2",
|
||||
"nama": "I Nyoman Rizky Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq3",
|
||||
"nama": "I Kadek Wahyu Nugraha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq4",
|
||||
"nama": "I Komang Fajar Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq5",
|
||||
"nama": "Ni Luh Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq6",
|
||||
"nama": "Ni Made Putu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq7",
|
||||
"nama": "I Gede Arjuna Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq8",
|
||||
"nama": "Ni Kadek Ayu Puspita",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq9",
|
||||
"nama": "I Putu Danu Kresna",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy1mvk000804ladmmq5qq0",
|
||||
"nama": "Ni Komang Ratna Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtda",
|
||||
"nama": "I Made Yoga Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdb",
|
||||
"nama": "I Nyoman Bayu Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdc",
|
||||
"nama": "I Kadek Rama Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdd",
|
||||
"nama": "I Komang Agus Prabawa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtde",
|
||||
"nama": "Ni Luh Ayu Citra Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdf",
|
||||
"nama": "Ni Made Sari Indrayani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdg",
|
||||
"nama": "I Gede Mahesa Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdh",
|
||||
"nama": "Ni Kadek Purnami Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdi",
|
||||
"nama": "I Putu Arta Gunawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy2m6j000904la2fbthtdj",
|
||||
"nama": "Ni Komang Indah Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpya",
|
||||
"nama": "I Made Arya Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyb",
|
||||
"nama": "I Nyoman Dika Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyc",
|
||||
"nama": "I Kadek Putra Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyd",
|
||||
"nama": "I Komang Agus Setiawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpye",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyf",
|
||||
"nama": "Ni Kadek Ayu Puspita",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyg",
|
||||
"nama": "I Putu Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyh",
|
||||
"nama": "Ni Komang Dwi Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyi",
|
||||
"nama": "I Made Bayu Kurniawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy5cs5000a04la9jlcbpyj",
|
||||
"nama": "Ni Putu Ayu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ua",
|
||||
"nama": "I Made Dewa Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ub",
|
||||
"nama": "I Nyoman Surya Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60uc",
|
||||
"nama": "I Kadek Bima Santosa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ud",
|
||||
"nama": "I Komang Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ue",
|
||||
"nama": "Ni Luh Made Pertiwi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60uf",
|
||||
"nama": "Ni Kadek Citra Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ug",
|
||||
"nama": "I Putu Rangga Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60uh",
|
||||
"nama": "Ni Komang Rina Apriyani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60ui",
|
||||
"nama": "I Made Aditya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy6dtp000b04la1zlo60uj",
|
||||
"nama": "Ni Putu Ayu Cahyaningrum",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcaa",
|
||||
"nama": "I Made Krisna Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcab",
|
||||
"nama": "I Nyoman Gede Putrawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcac",
|
||||
"nama": "I Kadek Yoga Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcad",
|
||||
"nama": "I Komang Danu Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcae",
|
||||
"nama": "Ni Luh Ayu Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcaf",
|
||||
"nama": "Ni Kadek Intan Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcag",
|
||||
"nama": "I Putu Wira Gunawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcah",
|
||||
"nama": "Ni Komang Ayu Ratnasari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcai",
|
||||
"nama": "I Made Fajar Nugraha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy76ux000c04lags2adcaj",
|
||||
"nama": "Ni Putu Desi Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn1",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn2",
|
||||
"nama": "I Nyoman Surya Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn3",
|
||||
"nama": "I Komang Aditya Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn4",
|
||||
"nama": "I Putu Gede Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn5",
|
||||
"nama": "Ni Luh Putri Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn6",
|
||||
"nama": "Ni Kadek Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn7",
|
||||
"nama": "I Made Yoga Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn8",
|
||||
"nama": "I Nyoman Wira Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn9",
|
||||
"nama": "Ni Komang Diah Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy85nz000d04lahr5hepn0",
|
||||
"nama": "I Putu Bayu Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390na",
|
||||
"nama": "I Made Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nb",
|
||||
"nama": "I Nyoman Agus Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nc",
|
||||
"nama": "I Komang Yuda Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nd",
|
||||
"nama": "I Putu Gede Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390ne",
|
||||
"nama": "Ni Luh Desi Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nf",
|
||||
"nama": "Ni Kadek Ayu Prameswari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390ng",
|
||||
"nama": "I Made Rizky Ananta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nh",
|
||||
"nama": "I Nyoman Dika Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390ni",
|
||||
"nama": "Ni Komang Puspita Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy91wc000e04la966390nj",
|
||||
"nama": "I Putu Andika Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi1",
|
||||
"nama": "I Made Wahyu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi2",
|
||||
"nama": "I Nyoman Kevin Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi3",
|
||||
"nama": "I Komang Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi4",
|
||||
"nama": "I Putu Gede Satya Wibawa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi5",
|
||||
"nama": "Ni Luh Ayu Citra Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi6",
|
||||
"nama": "Ni Kadek Putri Anggraini",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi7",
|
||||
"nama": "I Made Fajar Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi8",
|
||||
"nama": "I Nyoman Rama Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi9",
|
||||
"nama": "Ni Komang Sinta Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoy9zzy000f04la7rze3fi0",
|
||||
"nama": "I Putu Dimas Pradipta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wya",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyb",
|
||||
"nama": "I Nyoman Adi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyc",
|
||||
"nama": "I Wayan Putra Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyd",
|
||||
"nama": "Ni Kadek Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyf",
|
||||
"nama": "I Komang Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyg",
|
||||
"nama": "Ni Luh Putu Anggreni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyh",
|
||||
"nama": "I Made Dewa Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyi",
|
||||
"nama": "Ni Putu Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyj",
|
||||
"nama": "I Nyoman Agus Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyapqt000g04laaob10wyk",
|
||||
"nama": "Ni Komang Ratih Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc1",
|
||||
"nama": "I Wayan Surya Dharma",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc2",
|
||||
"nama": "Ni Kadek Ayu Prameswari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc3",
|
||||
"nama": "I Made Gede Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc4",
|
||||
"nama": "I Nyoman Krisna Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc5",
|
||||
"nama": "Ni Luh Desi Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc6",
|
||||
"nama": "I Komang Bima Santosa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc7",
|
||||
"nama": "Ni Putu Cahya Utami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc8",
|
||||
"nama": "I Wayan Dimas Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc9",
|
||||
"nama": "Ni Kadek Purnama Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "dnkoybh2p000h04lahbds4wc0",
|
||||
"nama": "I Made Yoga Kencana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1a",
|
||||
"nama": "I Nyoman Gede Sapta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1b",
|
||||
"nama": "Ni Luh Ayu Pertiwi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1c",
|
||||
"nama": "I Wayan Danu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1d",
|
||||
"nama": "Ni Kadek Melati Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1e",
|
||||
"nama": "I Made Raka Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1f",
|
||||
"nama": "Ni Komang Sinta Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1g",
|
||||
"nama": "I Nyoman Arta Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1h",
|
||||
"nama": "Ni Putu Indah Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1i",
|
||||
"nama": "I Wayan Bagus Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoyc6ij000i04la3r8i7f1j",
|
||||
"nama": "Ni Kadek Ayu Wulandari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9ba",
|
||||
"nama": "I Made Arya Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bb",
|
||||
"nama": "I Komang Adi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bc",
|
||||
"nama": "I Nyoman Dewa Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bd",
|
||||
"nama": "I Ketut Agus Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9be",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bf",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bg",
|
||||
"nama": "I Made Surya Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bh",
|
||||
"nama": "I Komang Yoga Pradipta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bi",
|
||||
"nama": "Ni Putu Citra Wulandari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "dnkoycyfl000j04la757zg9bj",
|
||||
"nama": "I Nyoman Bayu Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfa",
|
||||
"nama": "I Made Gede Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfb",
|
||||
"nama": "I Komang Krisna Yudha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfc",
|
||||
"nama": "I Nyoman Putra Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfd",
|
||||
"nama": "I Ketut Wira Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfe",
|
||||
"nama": "Ni Luh Kadek Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbff",
|
||||
"nama": "Ni Made Ayu Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfg",
|
||||
"nama": "I Putu Yoga Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfh",
|
||||
"nama": "I Komang Dimas Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfi",
|
||||
"nama": "Ni Kadek Sinta Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "dnkoydnnl000k04lae6jvhbfj",
|
||||
"nama": "I Nyoman Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
}
|
||||
]
|
||||
967
prisma/data/pendidikan/info-sekolah/siswa.json
Normal file
967
prisma/data/pendidikan/info-sekolah/siswa.json
Normal file
@@ -0,0 +1,967 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3arm",
|
||||
"nama": "I Kadek Ariyasa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3brm",
|
||||
"nama": "Ni Luh Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3crm",
|
||||
"nama": "I Made Dharma Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3drm",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3erm",
|
||||
"nama": "I Komang Aditya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3frm",
|
||||
"nama": "Ni Made Intan Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3grm",
|
||||
"nama": "I Putu Bayu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3hrm",
|
||||
"nama": "Ni Ketut Sri Wahyuni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3irm",
|
||||
"nama": "I Nyoman Yoga Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
{
|
||||
"id": "cmkowzpeu000004l7exka3jrm",
|
||||
"nama": "Ni Komang Ratna Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd200"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z5r",
|
||||
"nama": "I Made Satria",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z1r",
|
||||
"nama": "Ni Luh Putri Ayu",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z2r",
|
||||
"nama": "I Kadek Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z3r",
|
||||
"nama": "Ni Made Rani Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z4r",
|
||||
"nama": "I Komang Yuda Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z5r",
|
||||
"nama": "Ni Kadek Ayu Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z6r",
|
||||
"nama": "I Putu Ardi Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z7r",
|
||||
"nama": "Ni Ketut Melati",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z8r",
|
||||
"nama": "I Nyoman Agung",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
{
|
||||
"id": "cmkox31m7000004lagpwk9z9r",
|
||||
"nama": "Ni Komang Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd202"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67yy",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67zz",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67aa",
|
||||
"nama": "I Komang Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67bb",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67cc",
|
||||
"nama": "I Putu Gede Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67dd",
|
||||
"nama": "Ni Made Cahya Utami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67ee",
|
||||
"nama": "I Nyoman Aditya Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67ff",
|
||||
"nama": "Ni Komang Ratna Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67gg",
|
||||
"nama": "I Kadek Bima Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
{
|
||||
"id": "cmkox64cu000104la7mge67hh",
|
||||
"nama": "Ni Putu Ayu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd203"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pag",
|
||||
"nama": "I Made Yoga Wirawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pbg",
|
||||
"nama": "Ni Luh Desi Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pcg",
|
||||
"nama": "I Komang Putra Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pdg",
|
||||
"nama": "Ni Kadek Intan Paramitha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1peg",
|
||||
"nama": "I Putu Adi Wicaksana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pfg",
|
||||
"nama": "Ni Made Ayu Kirana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1phg",
|
||||
"nama": "I Nyoman Bayu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pih",
|
||||
"nama": "Ni Komang Sri Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pjh",
|
||||
"nama": "I Kadek Rama Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pjk",
|
||||
"nama": "Ni Putu Diah Anggraini",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd204"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzg",
|
||||
"nama": "I Made Krisna Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzh",
|
||||
"nama": "Ni Luh Ayu Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzi",
|
||||
"nama": "I Komang Yuda Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzj",
|
||||
"nama": "Ni Kadek Putri Anjani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzk",
|
||||
"nama": "I Putu Surya Adi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzl",
|
||||
"nama": "Ni Made Ayu Cahyani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzm",
|
||||
"nama": "I Nyoman Artha Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzn",
|
||||
"nama": "Ni Komang Sinta Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzo",
|
||||
"nama": "I Kadek Gede Pranaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
{
|
||||
"id": "cmkox9520000204la1ans1pzp",
|
||||
"nama": "Ni Putu Ratih Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd205"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5a",
|
||||
"nama": "I Made Arya Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5b",
|
||||
"nama": "I Nyoman Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5c",
|
||||
"nama": "I Kadek Surya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5d",
|
||||
"nama": "I Komang Aditya Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5e",
|
||||
"nama": "Ni Luh Putri Ayu",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5f",
|
||||
"nama": "Ni Made Intan Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5g",
|
||||
"nama": "I Gede Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5h",
|
||||
"nama": "Ni Kadek Sri Wahyuni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5i",
|
||||
"nama": "I Putu Andika Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
{
|
||||
"id": "cmkoxzl8u000704la0jla6y5j",
|
||||
"nama": "Ni Komang Diah Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd400"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq1",
|
||||
"nama": "I Made Bima Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq2",
|
||||
"nama": "I Nyoman Rizky Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq3",
|
||||
"nama": "I Kadek Wahyu Nugraha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq4",
|
||||
"nama": "I Komang Fajar Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq5",
|
||||
"nama": "Ni Luh Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq6",
|
||||
"nama": "Ni Made Putu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq7",
|
||||
"nama": "I Gede Arjuna Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq8",
|
||||
"nama": "Ni Kadek Ayu Puspita",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq9",
|
||||
"nama": "I Putu Danu Kresna",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy1mvk000804ladmmq5qq0",
|
||||
"nama": "Ni Komang Ratna Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd300"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtda",
|
||||
"nama": "I Made Yoga Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdb",
|
||||
"nama": "I Nyoman Bayu Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdc",
|
||||
"nama": "I Kadek Rama Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdd",
|
||||
"nama": "I Komang Agus Prabawa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtde",
|
||||
"nama": "Ni Luh Ayu Citra Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdf",
|
||||
"nama": "Ni Made Sari Indrayani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdg",
|
||||
"nama": "I Gede Mahesa Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdh",
|
||||
"nama": "Ni Kadek Purnami Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdi",
|
||||
"nama": "I Putu Arta Gunawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy2m6j000904la2fbthtdj",
|
||||
"nama": "Ni Komang Indah Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd401"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpya",
|
||||
"nama": "I Made Arya Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyb",
|
||||
"nama": "I Nyoman Dika Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyc",
|
||||
"nama": "I Kadek Putra Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyd",
|
||||
"nama": "I Komang Agus Setiawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpye",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyf",
|
||||
"nama": "Ni Kadek Ayu Puspita",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyg",
|
||||
"nama": "I Putu Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyh",
|
||||
"nama": "Ni Komang Dwi Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyi",
|
||||
"nama": "I Made Bayu Kurniawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy5cs5000a04la9jlcbpyj",
|
||||
"nama": "Ni Putu Ayu Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd402"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ua",
|
||||
"nama": "I Made Dewa Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ub",
|
||||
"nama": "I Nyoman Surya Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60uc",
|
||||
"nama": "I Kadek Bima Santosa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ud",
|
||||
"nama": "I Komang Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ue",
|
||||
"nama": "Ni Luh Made Pertiwi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60uf",
|
||||
"nama": "Ni Kadek Citra Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ug",
|
||||
"nama": "I Putu Rangga Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60uh",
|
||||
"nama": "Ni Komang Rina Apriyani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60ui",
|
||||
"nama": "I Made Aditya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy6dtp000b04la1zlo60uj",
|
||||
"nama": "Ni Putu Ayu Cahyaningrum",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd403"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcaa",
|
||||
"nama": "I Made Krisna Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcab",
|
||||
"nama": "I Nyoman Gede Putrawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcac",
|
||||
"nama": "I Kadek Yoga Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcad",
|
||||
"nama": "I Komang Danu Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcae",
|
||||
"nama": "Ni Luh Ayu Sinta Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcaf",
|
||||
"nama": "Ni Kadek Intan Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcag",
|
||||
"nama": "I Putu Wira Gunawan",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcah",
|
||||
"nama": "Ni Komang Ayu Ratnasari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcai",
|
||||
"nama": "I Made Fajar Nugraha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy76ux000c04lags2adcaj",
|
||||
"nama": "Ni Putu Desi Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd404"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn1",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn2",
|
||||
"nama": "I Nyoman Surya Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn3",
|
||||
"nama": "I Komang Aditya Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn4",
|
||||
"nama": "I Putu Gede Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn5",
|
||||
"nama": "Ni Luh Putri Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn6",
|
||||
"nama": "Ni Kadek Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn7",
|
||||
"nama": "I Made Yoga Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn8",
|
||||
"nama": "I Nyoman Wira Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn9",
|
||||
"nama": "Ni Komang Diah Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy85nz000d04lahr5hepn0",
|
||||
"nama": "I Putu Bayu Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd405"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390na",
|
||||
"nama": "I Made Dwi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nb",
|
||||
"nama": "I Nyoman Agus Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nc",
|
||||
"nama": "I Komang Yuda Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nd",
|
||||
"nama": "I Putu Gede Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390ne",
|
||||
"nama": "Ni Luh Desi Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nf",
|
||||
"nama": "Ni Kadek Ayu Prameswari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390ng",
|
||||
"nama": "I Made Rizky Ananta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nh",
|
||||
"nama": "I Nyoman Dika Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390ni",
|
||||
"nama": "Ni Komang Puspita Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy91wc000e04la966390nj",
|
||||
"nama": "I Putu Andika Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd406"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi1",
|
||||
"nama": "I Made Wahyu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi2",
|
||||
"nama": "I Nyoman Kevin Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi3",
|
||||
"nama": "I Komang Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi4",
|
||||
"nama": "I Putu Gede Satya Wibawa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi5",
|
||||
"nama": "Ni Luh Ayu Citra Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi6",
|
||||
"nama": "Ni Kadek Putri Anggraini",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi7",
|
||||
"nama": "I Made Fajar Pranata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi8",
|
||||
"nama": "I Nyoman Rama Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi9",
|
||||
"nama": "Ni Komang Sinta Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoy9zzy000f04la7rze3fi0",
|
||||
"nama": "I Putu Dimas Pradipta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd407"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wya",
|
||||
"nama": "I Made Arya Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyb",
|
||||
"nama": "I Nyoman Adi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyc",
|
||||
"nama": "I Wayan Putra Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyd",
|
||||
"nama": "Ni Kadek Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyf",
|
||||
"nama": "I Komang Yoga Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyg",
|
||||
"nama": "Ni Luh Putu Anggreni",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyh",
|
||||
"nama": "I Made Dewa Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyi",
|
||||
"nama": "Ni Putu Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyj",
|
||||
"nama": "I Nyoman Agus Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyapqt000g04laaob10wyk",
|
||||
"nama": "Ni Komang Ratih Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd408"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc1",
|
||||
"nama": "I Wayan Surya Dharma",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc2",
|
||||
"nama": "Ni Kadek Ayu Prameswari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc3",
|
||||
"nama": "I Made Gede Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc4",
|
||||
"nama": "I Nyoman Krisna Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc5",
|
||||
"nama": "Ni Luh Desi Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc6",
|
||||
"nama": "I Komang Bima Santosa",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc7",
|
||||
"nama": "Ni Putu Cahya Utami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc8",
|
||||
"nama": "I Wayan Dimas Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc9",
|
||||
"nama": "Ni Kadek Purnama Sari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
{
|
||||
"id": "cmkoybh2p000h04lahbds4wc0",
|
||||
"nama": "I Made Yoga Kencana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd409"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1a",
|
||||
"nama": "I Nyoman Gede Sapta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1b",
|
||||
"nama": "Ni Luh Ayu Pertiwi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1c",
|
||||
"nama": "I Wayan Danu Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1d",
|
||||
"nama": "Ni Kadek Melati Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1e",
|
||||
"nama": "I Made Raka Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1f",
|
||||
"nama": "Ni Komang Sinta Laksmi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1g",
|
||||
"nama": "I Nyoman Arta Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1h",
|
||||
"nama": "Ni Putu Indah Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1i",
|
||||
"nama": "I Wayan Bagus Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoyc6ij000i04la3r8i7f1j",
|
||||
"nama": "Ni Kadek Ayu Wulandari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd410"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9ba",
|
||||
"nama": "I Made Arya Putra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bb",
|
||||
"nama": "I Komang Adi Saputra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bc",
|
||||
"nama": "I Nyoman Dewa Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bd",
|
||||
"nama": "I Ketut Agus Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9be",
|
||||
"nama": "Ni Luh Putu Sari Dewi",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bf",
|
||||
"nama": "Ni Kadek Ayu Lestari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bg",
|
||||
"nama": "I Made Surya Mahendra",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bh",
|
||||
"nama": "I Komang Yoga Pradipta",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bi",
|
||||
"nama": "Ni Putu Citra Wulandari",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
{
|
||||
"id": "cmkoycyfl000j04la757zg9bj",
|
||||
"nama": "I Nyoman Bayu Pramana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd411"
|
||||
},
|
||||
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfa",
|
||||
"nama": "I Made Gede Pratama",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfb",
|
||||
"nama": "I Komang Krisna Yudha",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfc",
|
||||
"nama": "I Nyoman Putra Santika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfd",
|
||||
"nama": "I Ketut Wira Adnyana",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfe",
|
||||
"nama": "Ni Luh Kadek Maharani",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbff",
|
||||
"nama": "Ni Made Ayu Purnami",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfg",
|
||||
"nama": "I Putu Yoga Mahardika",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfh",
|
||||
"nama": "I Komang Dimas Prasetya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfi",
|
||||
"nama": "Ni Kadek Sinta Permata",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
},
|
||||
{
|
||||
"id": "cmkoydnnl000k04lae6jvhbfj",
|
||||
"nama": "I Nyoman Arta Wijaya",
|
||||
"lembagaId": "cmghqwjs4000404l8c6vwd412"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,47 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkqb11mc000104jibq76bdzu",
|
||||
"name": "Fiksi"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibq87bdzu",
|
||||
"name": "Non Fiksi"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibq97bdzu",
|
||||
"name": "Pendidikan"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqa7bdzu",
|
||||
"name": "Ilmiah"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqb7bdzu",
|
||||
"name": "Drama"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqc7bdzu",
|
||||
"name": "Sejarah"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqd7bdzu",
|
||||
"name": "Teknologi"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqe7bdzu",
|
||||
"name": "Agama"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqf7bdzu",
|
||||
"name": "Pengembangan Diri"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqg7bdzu",
|
||||
"name": "Kesehatan"
|
||||
},
|
||||
{
|
||||
"id": "cmkqb11mc000104jibqh7bdzu",
|
||||
"name": "Anak Dan Remaja"
|
||||
}
|
||||
|
||||
]
|
||||
@@ -0,0 +1,142 @@
|
||||
[
|
||||
{
|
||||
"id": "cmkqhbi6f0002vneao4my49k9",
|
||||
"judul": "Laskar Pelangi",
|
||||
"deskripsi": "<p>Novel inspiratif tentang perjuangan anak-anak di Belitung dalam meraih pendidikan dan mimpi mereka</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq76bdzu",
|
||||
"imageId": "cmkqhbhxi0000vneamj3din9u"
|
||||
},
|
||||
{
|
||||
"id": "cmkqhedff0005vneas3rtbumi",
|
||||
"judul": "Bumi Manusia",
|
||||
"deskripsi": "<p>Kisah kehidupan Minke di masa kolonial yang menggambarkan perjuangan, pendidikan, dan identitas bangsa</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqc7bdzu",
|
||||
"imageId": "cmkqhed8x0003vneakx0c7me2"
|
||||
},
|
||||
{
|
||||
"id": "cmkqhg1g70008vneajbpz8phh",
|
||||
"judul": "Atomic Habits",
|
||||
"deskripsi": "<p>Panduan membangun kebiasaan kecil yang konsisten untuk menghasilkan perubahan besar dalam hidup</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
|
||||
"imageId": "cmkqhg1cb0006vneagsxa6t4t"
|
||||
},
|
||||
{
|
||||
"id": "cmkqhl6sr000bvneampx0svus",
|
||||
"judul": "Clean Code",
|
||||
"deskripsi": "<p>Buku wajib programmer tentang cara menulis kode yang bersih, mudah dibaca, dan mudah dirawat</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
|
||||
"imageId": "cmkqhl6mv0009vneasgix42ud"
|
||||
},
|
||||
{
|
||||
"id": "cmkqhoaa1000evnearppgpyxo",
|
||||
"judul": "Sejarah Indonesia Modern",
|
||||
"deskripsi": "<p>Membahas perjalanan sejarah Indonesia dari masa kolonial hingga era modern</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqc7bdzu",
|
||||
"imageId": "cmkqhoa5w000cvneah15n28zq"
|
||||
},
|
||||
{
|
||||
"id": "cmkqhr9oc000hvnea677ad3kb",
|
||||
"judul": "Ensiklopedia Anak Pintar",
|
||||
"deskripsi": "<p>Buku referensi bergambar yang membantu anak mengenal ilmu pengetahuan secara menyenangkan</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqh7bdzu",
|
||||
"imageId": "cmkqhr9lg000fvneai3q8qw0s"
|
||||
},
|
||||
{
|
||||
"id": "cmkqi5ksf000kvnea9c04n2hy",
|
||||
"judul": "Filosofi Teras",
|
||||
"deskripsi": "<p>Pengenalan filsafat Stoikisme untuk menghadapi kehidupan modern dengan lebih tenang</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq87bdzu",
|
||||
"imageId": "cmkqi5knc000ivnea8grp7j06"
|
||||
},
|
||||
{
|
||||
"id": "cmkqi97hq000nvneaparjbcrm",
|
||||
"judul": "Pemrograman JavaScript Dasar",
|
||||
"deskripsi": "<p>Panduan dasar belajar JavaScript untuk pemula dalam dunia pengembangan web</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
|
||||
"imageId": "cmkqi9799000lvneamskmvpq5"
|
||||
},
|
||||
{
|
||||
"id": "cmkqibjt9000qvnea13ox7fmv",
|
||||
"judul": "Pendidikan Karakter",
|
||||
"deskripsi": "<p>Buku yang membahas pentingnya pendidikan karakter dalam membentuk generasi bangsa</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
|
||||
"imageId": "cmkqibjj2000ovnea3zmmvdop"
|
||||
},
|
||||
{
|
||||
"id": "cmkqidnar000tvneaohk5v8k6",
|
||||
"judul": "Psikologi Kepribadian",
|
||||
"deskripsi": "<p>Mengenal teori-teori kepribadian manusia dalam perspektif psikologi</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq87bdzu",
|
||||
"imageId": "cmkqidn7e000rvnea5rl58f2e"
|
||||
},
|
||||
{
|
||||
"id": "cmkqifdiu000wvnea7xd0yi4f",
|
||||
"judul": "Ayat-Ayat Cinta",
|
||||
"deskripsi": "<p>Novel religi yang mengangkat kisah cinta, iman, dan perjuangan hidup</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqe7bdzu",
|
||||
"imageId": "cmkqifdfs000uvneajss8zswp"
|
||||
},
|
||||
{
|
||||
"id": "cmkqik7vi000zvneae7d5cq9i",
|
||||
"judul": "Negeri 5 Menara",
|
||||
"deskripsi": "<p>Cerita persahabatan dan perjuangan santri dalam mengejar mimpi hingga ke mancanegara</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq76bdzu",
|
||||
"imageId": "cmkqik7p5000xvnea6krii3vw"
|
||||
},
|
||||
{
|
||||
"id": "cmkqinno30012vneac1sgsvis",
|
||||
"judul": "Belajar UI/UX Design",
|
||||
"deskripsi": "<p>Panduan praktis memahami desain antarmuka dan pengalaman pengguna</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
|
||||
"imageId": "cmkqinnih0010vneakpjb9egl"
|
||||
},
|
||||
{
|
||||
"id": "cmkqiqegd0015vneawv5u5tpm",
|
||||
"judul": "Manajemen Waktu Efektif",
|
||||
"deskripsi": "<p>Teknik mengatur waktu agar lebih produktif dan fokus pada hal penting</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
|
||||
"imageId": "cmkqiqeb60013vnea2ygrq5rs"
|
||||
},
|
||||
{
|
||||
"id": "cmkqiurc60018vneavyd3pj9q",
|
||||
"judul": "Dongeng Nusantara",
|
||||
"deskripsi": "<p>Kumpulan dongeng tradisional Indonesia yang sarat pesan moral</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq76bdzu",
|
||||
"imageId": "cmkqiur960016vnea3werdoey"
|
||||
},
|
||||
{
|
||||
"id": "cmkqix2kb001bvnea5v81cw7p",
|
||||
"judul": "Ekonomi Makro",
|
||||
"deskripsi": "<p>Pembahasan konsep ekonomi makro secara sistematis dan mudah dipahami</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq87bdzu",
|
||||
"imageId": "cmkqix2go0019vnea8coousvn"
|
||||
},
|
||||
{
|
||||
"id": "cmkqiyts2001evneahnk45ry5",
|
||||
"judul": "Seni Berpikir Kritis",
|
||||
"deskripsi": "<p>Buku yang membantu pembaca menghindari kesalahan berpikir dalam pengambilan keputusan</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq87bdzu",
|
||||
"imageId": "cmkqiytnv001cvnea7o2sv1vt"
|
||||
},
|
||||
{
|
||||
"id": "cmkqj0nq0001hvnea06r8m3kj",
|
||||
"judul": "Seni Berpikir Kritis",
|
||||
"deskripsi": "<p>Buku yang membantu pembaca menghindari kesalahan berpikir dalam pengambilan keputusan</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibq87bdzu",
|
||||
"imageId": "cmkqj0nn0001fvneaufur3nke"
|
||||
},
|
||||
{
|
||||
"id": "cmkqj37w4001kvnea04n9w2bx",
|
||||
"judul": "Panduan Shalat Lengkap",
|
||||
"deskripsi": "<p>Panduan praktis dan lengkap tentang tata cara shalat sesuai tuntunan</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqe7bdzu",
|
||||
"imageId": "cmkqj37rg001ivneam29fgayr"
|
||||
},
|
||||
{
|
||||
"id": "cmkqj5qp6001nvnea4xhvluz3",
|
||||
"judul": "Cerita Sains untuk Anak",
|
||||
"deskripsi": "<p>Cerita edukatif yang mengenalkan sains kepada anak dengan bahasa sederhana</p>",
|
||||
"kategoriId": "cmkqb11mc000104jibqh7bdzu",
|
||||
"imageId": "cmkqj5ql6001lvnea6p0afr9f"
|
||||
}
|
||||
]
|
||||
@@ -6,6 +6,6 @@
|
||||
"riwayat": "<ul> <li>2021 - 2027: Perbekel Desa Darmasaba</li> <li>2015 - Sekarang: Founder & Managing Director Mantra Legal Consultants & Advocates</li> <li>2020 - Sekarang: Founder Ugawa Record Music Studio</li> <li>2010 - 2016: Dosen Fakultas Hukum Universitas Mahasaraswati Denpasar</li> </ul>",
|
||||
"pengalaman": "<ul> <li>1996 – 1997: Ketua OSIS SMP Negeri 1 Abiansemal</li><li>1999 – 2000: Ketua OSIS SMA Negeri 1 Mengwi</li> <li>2008 – 2009: Ketua BEM Universitas Mahasaraswati Denpasar</li> <li>2008 – 2010: Ketua Sekaa Taruna Sila Dharma, Banjar Tengah, Desa Adat Tegal, Darmasaba</li> <li>2020 – Sekarang: Pengurus Young Lawyer Committee Peradi Denpasar</li> <li>2021 – Sekarang: Dewan Kehormatan Himpunan Pengusaha Muda Indonesia (HIPMI) Badung</li> <li>2023 – 2028: Komite Tetap Advokasi – Bidang Hukum dan Regulasi Kamar Dagang dan Industri Badung</li> </ul>",
|
||||
"unggulan": "<h3>Pemberdayaan Ekonomi dan UMKM</h3> <ul> <li>Pelatihan dan pendampingan UMKM lokal</li> <li>Program bantuan modal usaha bagi pelaku usaha kecil</li><li>Digitalisasi UMKM untuk meningkatkan pemasaran produk lokal</li></ul>",
|
||||
"imageId" : "cmk3o5wxs0006vn9b1u5kbqyw"
|
||||
"imageName" : "t9x6bSW8WnbdPS9cx9PLC-mobile.webp"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"telepon": "081234567891",
|
||||
"alamat": "Jl. Raya Desa No. 1",
|
||||
"posisiId": "kepala_desa",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewxfvw000004ibee5013f4",
|
||||
@@ -19,7 +20,8 @@
|
||||
"telepon": "081234567892",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "sekretaris_desa",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewxvqw000104ibgm5l8fzs",
|
||||
@@ -30,7 +32,8 @@
|
||||
"telepon": "081234567892",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kaur_keuangan",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewy1g9000204ib2n7hbx0i",
|
||||
@@ -41,7 +44,8 @@
|
||||
"telepon": "081234567892",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kadus_banjar_dinas_menesa",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewybah000304ibgqhn1gm2",
|
||||
@@ -52,7 +56,8 @@
|
||||
"telepon": "081234567893",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kadus_banjar_dinas_darmasaba",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewygqz000404ib20sv8nvg",
|
||||
@@ -63,7 +68,8 @@
|
||||
"telepon": "081234567893",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kadus_banjar_dinas_bucu",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewyos1000504ibcu8o2gyk",
|
||||
@@ -74,7 +80,8 @@
|
||||
"telepon": "081234567893",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kadus_banjar_dinas_gulingan",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
},
|
||||
{
|
||||
"id": "cmgewyxk7000604ib8djs3i6c",
|
||||
@@ -85,7 +92,8 @@
|
||||
"telepon": "081234567893",
|
||||
"alamat": "Jl. Raya Desa No. 2",
|
||||
"posisiId": "kadus_banjar_dinas_taman",
|
||||
"isActive": true
|
||||
"isActive": true,
|
||||
"imageName": ""
|
||||
}
|
||||
|
||||
]
|
||||
74
prisma/lib/get_images.ts
Normal file
74
prisma/lib/get_images.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
type DirItem = {
|
||||
type: "file" | "dir";
|
||||
name: string;
|
||||
path: string;
|
||||
size?: number;
|
||||
};
|
||||
|
||||
const TOKEN = process.env.SEAFILE_TOKEN!;
|
||||
const REPO_ID = process.env.SEAFILE_REPO_ID!;
|
||||
|
||||
// ⛔ PENTING: RELATIVE PATH (tanpa slash depan)
|
||||
const DIR_TARGET = "asset-web";
|
||||
|
||||
const BASE_URL = process.env.SEAFILE_URL;
|
||||
|
||||
const headers = {
|
||||
Authorization: `Token ${TOKEN}`,
|
||||
};
|
||||
|
||||
async function getDirItems(): Promise<DirItem[]> {
|
||||
const res = await fetch(`${BASE_URL}/repos/${REPO_ID}/dir/?p=${DIR_TARGET}`, {
|
||||
headers,
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`Failed get dir items: ${res.statusText}`);
|
||||
}
|
||||
|
||||
return res.json();
|
||||
}
|
||||
|
||||
async function getDownloadUrl(filePath: string): Promise<string> {
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/repos/${REPO_ID}/file/?p=${encodeURIComponent(filePath)}&reuse=1`,
|
||||
{ headers },
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
const text = await res.text();
|
||||
console.error("Seafile error:", {
|
||||
status: res.status,
|
||||
body: text,
|
||||
url: res.url,
|
||||
});
|
||||
throw new Error(`Failed get file url`);
|
||||
}
|
||||
|
||||
const data = await res.json();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ambil semua download URL dari target dir
|
||||
*/
|
||||
export async function getAllDownloadUrls() {
|
||||
const items = await getDirItems();
|
||||
|
||||
const files = items.filter((item) => item.type === "file");
|
||||
|
||||
const results = await Promise.all(
|
||||
files.map(async (file) => {
|
||||
const filePath = `${DIR_TARGET}/${file.name}`;
|
||||
const url = await getDownloadUrl(filePath);
|
||||
return {
|
||||
name: file.name,
|
||||
path: filePath,
|
||||
downloadUrl: url,
|
||||
};
|
||||
}),
|
||||
);
|
||||
|
||||
return results;
|
||||
}
|
||||
84
prisma/migrations/20260122074939_21_jan_26/migration.sql
Normal file
84
prisma/migrations/20260122074939_21_jan_26/migration.sql
Normal file
@@ -0,0 +1,84 @@
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "Berita" DROP CONSTRAINT "Berita_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "InfoWabahPenyakit" DROP CONSTRAINT "InfoWabahPenyakit_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "KontakDarurat" DROP CONSTRAINT "KontakDarurat_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "PenangananDarurat" DROP CONSTRAINT "PenangananDarurat_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "Posyandu" DROP CONSTRAINT "Posyandu_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "ProgramKesehatan" DROP CONSTRAINT "ProgramKesehatan_imageId_fkey";
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "Puskesmas" DROP CONSTRAINT "Puskesmas_imageId_fkey";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Berita" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "InfoWabahPenyakit" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "KontakDarurat" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "PasarDesa" ADD COLUMN "deskripsi" TEXT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "PenangananDarurat" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Posyandu" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "ProgramKesehatan" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Puskesmas" ALTER COLUMN "imageId" DROP NOT NULL;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "LayananToPolsek" (
|
||||
"id" TEXT NOT NULL,
|
||||
"layananId" TEXT NOT NULL,
|
||||
"polsekTerdekatId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
|
||||
CONSTRAINT "LayananToPolsek_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Berita" ADD CONSTRAINT "Berita_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Posyandu" ADD CONSTRAINT "Posyandu_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Puskesmas" ADD CONSTRAINT "Puskesmas_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ProgramKesehatan" ADD CONSTRAINT "ProgramKesehatan_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PenangananDarurat" ADD CONSTRAINT "PenangananDarurat_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "KontakDarurat" ADD CONSTRAINT "KontakDarurat_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "InfoWabahPenyakit" ADD CONSTRAINT "InfoWabahPenyakit_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "LayananToPolsek" ADD CONSTRAINT "LayananToPolsek_layananId_fkey" FOREIGN KEY ("layananId") REFERENCES "LayananPolsek"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "LayananToPolsek" ADD CONSTRAINT "LayananToPolsek_polsekTerdekatId_fkey" FOREIGN KEY ("polsekTerdekatId") REFERENCES "PolsekTerdekat"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
82
prisma/newseed-asset.ts
Normal file
82
prisma/newseed-asset.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
type DirItem = {
|
||||
type: "file" | "dir";
|
||||
name: string;
|
||||
path: string;
|
||||
size?: number;
|
||||
};
|
||||
|
||||
type FileDownload = {
|
||||
name: string;
|
||||
path: string;
|
||||
link: string;
|
||||
};
|
||||
|
||||
const TOKEN = process.env.SEAFILE_TOKEN!;
|
||||
const REPO_ID = process.env.SEAFILE_REPO_ID!;
|
||||
|
||||
// ⛔ PENTING: RELATIVE PATH (tanpa slash depan)
|
||||
const DIR_TARGET = "asset-web";
|
||||
|
||||
const BASE_URL = "https://cld-dkr-makuro-seafile.wibudev.com/api2";
|
||||
|
||||
const headers = {
|
||||
Authorization: `Token ${TOKEN}`,
|
||||
};
|
||||
|
||||
/**
|
||||
* Ambil list item di directory
|
||||
*/
|
||||
async function getDirItems(): Promise<DirItem[]> {
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/repos/${REPO_ID}/dir/?p=${encodeURIComponent(DIR_TARGET)}`,
|
||||
{ headers },
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
const body = await res.text();
|
||||
throw new Error(`Failed get dir items: ${body}`);
|
||||
}
|
||||
|
||||
return res.json();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ambil download URL file
|
||||
*/
|
||||
async function getDownloadUrl(filePath: string): Promise<string> {
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/repos/${REPO_ID}/file/?p=${encodeURIComponent(filePath)}`,
|
||||
{ headers },
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
const body = await res.text();
|
||||
throw new Error(`Failed get file url: ${body}`);
|
||||
}
|
||||
|
||||
const data = await res.json();
|
||||
return data.url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ambil semua download URL dari folder image
|
||||
*/
|
||||
export async function getImageDownloadList(): Promise<FileDownload[]> {
|
||||
const items = await getDirItems();
|
||||
|
||||
const files = items.filter((item) => item.type === "file");
|
||||
|
||||
return Promise.all(
|
||||
files.map(async (file) => {
|
||||
const filePath = `${DIR_TARGET}/${file.name}`; // → /image/xxx.webp
|
||||
|
||||
return {
|
||||
name: file.name,
|
||||
path: filePath,
|
||||
link: await getDownloadUrl(filePath),
|
||||
};
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,25 +1,78 @@
|
||||
// import prisma from "@/lib/prisma";
|
||||
|
||||
// // Ganti nama fungsi dan logikanya
|
||||
// export default async function resolveImageById(
|
||||
// imageId?: string | null
|
||||
// ): Promise<string | null> {
|
||||
// if (!imageId) return null;
|
||||
|
||||
// const image = await prisma.fileStorage.findFirst({
|
||||
// where: {
|
||||
// id: imageId, // ← cari berdasarkan ID
|
||||
// category: "image",
|
||||
// isActive: true,
|
||||
// deletedAt: null,
|
||||
// },
|
||||
// select: { id: true },
|
||||
// });
|
||||
|
||||
// if (!image) {
|
||||
// console.warn(`⚠️ Image with ID ${imageId} not found`);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// return image.id;
|
||||
// }
|
||||
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
// Ganti nama fungsi dan logikanya
|
||||
export default async function resolveImageById(
|
||||
imageId?: string | null
|
||||
): Promise<string | null> {
|
||||
/**
|
||||
* Resolve image ID by checking multiple possible names
|
||||
* @param imageId - The ID from JSON (could be filename or actual ID)
|
||||
* @returns The actual database ID or null
|
||||
*/
|
||||
export default async function resolveImageById(imageId: string | null): Promise<string | null> {
|
||||
if (!imageId) return null;
|
||||
|
||||
const image = await prisma.fileStorage.findFirst({
|
||||
where: {
|
||||
id: imageId, // ← cari berdasarkan ID
|
||||
category: "image",
|
||||
isActive: true,
|
||||
deletedAt: null,
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
try {
|
||||
// 1. Coba cari berdasarkan ID langsung
|
||||
const byId = await prisma.fileStorage.findUnique({
|
||||
where: { id: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byId) return byId.id;
|
||||
|
||||
if (!image) {
|
||||
console.warn(`⚠️ Image with ID ${imageId} not found`);
|
||||
// 2. Coba cari berdasarkan name (exact match)
|
||||
const byName = await prisma.fileStorage.findUnique({
|
||||
where: { name: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byName) return byName.id;
|
||||
|
||||
// 3. Coba cari berdasarkan realName
|
||||
const byRealName = await prisma.fileStorage.findFirst({
|
||||
where: { realName: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byRealName) return byRealName.id;
|
||||
|
||||
// 4. Coba dengan menambahkan ekstensi .webp
|
||||
const withWebp = `${imageId.replace(/\.(jpg|jpeg|png)$/i, '')}.webp`;
|
||||
const byWebp = await prisma.fileStorage.findFirst({
|
||||
where: {
|
||||
OR: [
|
||||
{ name: withWebp },
|
||||
{ name: { contains: imageId.split('.')[0] } },
|
||||
],
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
if (byWebp) return byWebp.id;
|
||||
|
||||
console.warn(`⚠️ Image not found for: ${imageId}`);
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error(`❌ Error resolving image ${imageId}:`, error);
|
||||
return null;
|
||||
}
|
||||
|
||||
return image.id;
|
||||
}
|
||||
45
prisma/safeSeedMany.ts
Normal file
45
prisma/safeSeedMany.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
import { safeSeedUnique } from "./safeseedUnique";
|
||||
import cliProgress from 'cli-progress';
|
||||
|
||||
type SafeSeedOptions = {
|
||||
skipUpdate?: boolean;
|
||||
silent?: boolean; // Opsional: untuk suppress log
|
||||
};
|
||||
|
||||
/**
|
||||
* Batch upsert with progress logging
|
||||
*/
|
||||
export async function safeSeedMany<T extends keyof PrismaClient>(
|
||||
model: T,
|
||||
items: Array<{ where: Record<string, any>; data: Record<string, any> }>,
|
||||
options: SafeSeedOptions = {}
|
||||
) {
|
||||
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);
|
||||
bar.start(items.length, 0);
|
||||
|
||||
let success = 0;
|
||||
let failed = 0;
|
||||
let skipped = 0;
|
||||
|
||||
for (const [index, item] of items.entries()) {
|
||||
try {
|
||||
const result = await safeSeedUnique(model, item.where, item.data, {
|
||||
...options,
|
||||
silent: true,
|
||||
});
|
||||
if (result) success++;
|
||||
else skipped++;
|
||||
} catch (err) {
|
||||
failed++;
|
||||
}
|
||||
bar.update(index + 1);
|
||||
}
|
||||
|
||||
bar.stop();
|
||||
console.log(`✅ ${String(model)}: ${success} seeded, ${skipped} skipped, ${failed} failed`);
|
||||
|
||||
return { success, skipped, failed };
|
||||
}
|
||||
@@ -4,9 +4,16 @@ import { PrismaClient } from "@prisma/client";
|
||||
|
||||
type SafeSeedOptions = {
|
||||
skipUpdate?: boolean;
|
||||
silent?: boolean; // Opsional: untuk suppress log
|
||||
};
|
||||
|
||||
// prisma/safeseedUnique.ts
|
||||
/**
|
||||
* Safely upsert data with error handling
|
||||
* @param model - Prisma model name
|
||||
* @param where - Unique identifier(s)
|
||||
* @param data - Full data object (will be used for create)
|
||||
* @param options - Additional options
|
||||
*/
|
||||
export async function safeSeedUnique<T extends keyof PrismaClient>(
|
||||
model: T,
|
||||
where: Record<string, any>,
|
||||
@@ -14,23 +21,87 @@ export async function safeSeedUnique<T extends keyof PrismaClient>(
|
||||
options: SafeSeedOptions = {}
|
||||
) {
|
||||
const m = prisma[model] as any;
|
||||
if (!m) throw new Error(`Model ${String(model)} tidak ditemukan`);
|
||||
|
||||
if (!m) {
|
||||
throw new Error(`❌ Model ${String(model)} tidak ditemukan di Prisma Client`);
|
||||
}
|
||||
|
||||
try {
|
||||
// Pastikan `where` berisi field yang benar-benar unique (misal: `id`)
|
||||
const result = await m.upsert({
|
||||
where,
|
||||
update: options.skipUpdate ? {} : data,
|
||||
create: data, // ✅ Jangan duplikasi `where` ke `create`
|
||||
create: data,
|
||||
});
|
||||
console.log(`✅ Seed ${String(model)}:`, where);
|
||||
|
||||
if (!options.silent) {
|
||||
console.log(`✅ Seeded ${String(model)}:`, where);
|
||||
}
|
||||
|
||||
return result;
|
||||
} catch (err) {
|
||||
console.error(`❌ Gagal seed ${String(model)}:`, where, err);
|
||||
throw err; // ✅ Rethrow agar seeding berhenti jika kritis
|
||||
} catch (err: any) {
|
||||
// Handle specific Prisma errors
|
||||
if (err.code === "P2002") {
|
||||
console.warn(`⚠️ Duplicate ${String(model)} (skipped):`, where);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (err.code === "P2003") {
|
||||
console.error(`❌ Foreign key constraint failed for ${String(model)}:`, where);
|
||||
console.error(" Missing relation:", err.meta?.field_name);
|
||||
throw err;
|
||||
}
|
||||
|
||||
if (err.code === "P2025") {
|
||||
console.error(`❌ Record not found for ${String(model)}:`, where);
|
||||
throw err;
|
||||
}
|
||||
|
||||
// Log unexpected errors with full details
|
||||
console.error(`❌ Failed to seed ${String(model)}:`, where);
|
||||
console.error(" Error:", err.message);
|
||||
console.error(" Code:", err.code);
|
||||
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//ini yang bener pertama
|
||||
|
||||
// /* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
// import prisma from "@/lib/prisma";
|
||||
// import { PrismaClient } from "@prisma/client";
|
||||
|
||||
// type SafeSeedOptions = {
|
||||
// skipUpdate?: boolean;
|
||||
// };
|
||||
|
||||
// // prisma/safeseedUnique.ts
|
||||
// export async function safeSeedUnique<T extends keyof PrismaClient>(
|
||||
// model: T,
|
||||
// where: Record<string, any>,
|
||||
// data: Record<string, any>,
|
||||
// options: SafeSeedOptions = {}
|
||||
// ) {
|
||||
// const m = prisma[model] as any;
|
||||
// if (!m) throw new Error(`Model ${String(model)} tidak ditemukan`);
|
||||
|
||||
// try {
|
||||
// // Pastikan `where` berisi field yang benar-benar unique (misal: `id`)
|
||||
// const result = await m.upsert({
|
||||
// where,
|
||||
// update: options.skipUpdate ? {} : data,
|
||||
// create: data, // ✅ Jangan duplikasi `where` ke `create`
|
||||
// });
|
||||
// console.log(`✅ Seed ${String(model)}:`, where);
|
||||
// return result;
|
||||
// } catch (err) {
|
||||
// console.error(`❌ Gagal seed ${String(model)}:`, where, err);
|
||||
// throw err; // ✅ Rethrow agar seeding berhenti jika kritis
|
||||
// }
|
||||
// }
|
||||
|
||||
// /* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
// import { PrismaClient } from "@prisma/client";
|
||||
|
||||
|
||||
@@ -569,8 +569,8 @@ model MaskotDesa {
|
||||
model ProfileDesaImage {
|
||||
id String @id @default(cuid())
|
||||
label String
|
||||
image FileStorage @relation(fields: [imageId], references: [id])
|
||||
imageId String
|
||||
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||
imageId String?
|
||||
MaskotDesa MaskotDesa @relation(fields: [maskotDesaId], references: [id])
|
||||
maskotDesaId String
|
||||
}
|
||||
@@ -1934,7 +1934,7 @@ model NilaiKonservasiAdat {
|
||||
// ========================================= INFO SEKOLAH & PAUD ========================================= //
|
||||
model JenjangPendidikan {
|
||||
id String @id @default(cuid())
|
||||
nama String // TK/PAUD, SD, SMP, SMA/SMK
|
||||
nama String // TK/PAUD, SD, SMP, SMA/SMK
|
||||
lembagas Lembaga[] // Relasi ke lembaga
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -2179,6 +2179,18 @@ enum StatusPeminjaman {
|
||||
Dibatalkan
|
||||
}
|
||||
|
||||
|
||||
// ========================================= DATA PENDIDIKAN ========================================= //
|
||||
model DataPendidikan {
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
jumlah String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
deletedAt DateTime @default(now())
|
||||
isActive Boolean @default(true)
|
||||
}
|
||||
|
||||
// ========================================= USER ========================================= //
|
||||
|
||||
model User {
|
||||
@@ -2249,14 +2261,3 @@ model UserMenuAccess {
|
||||
|
||||
@@unique([userId, menuId]) // Satu user tidak bisa punya akses menu yang sama dua kali
|
||||
}
|
||||
|
||||
// ========================================= DATA PENDIDIKAN ========================================= //
|
||||
model DataPendidikan {
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
jumlah String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
deletedAt DateTime @default(now())
|
||||
isActive Boolean @default(true)
|
||||
}
|
||||
|
||||
4193
prisma/seed.ts
4193
prisma/seed.ts
File diff suppressed because it is too large
Load Diff
@@ -1,174 +1,68 @@
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
// prisma/seedAssets.ts
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import prisma from "@/lib/prisma";
|
||||
import AdmZip from "adm-zip";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import sharp from "sharp";
|
||||
import fetchWithRetry from "./data/fetchWithRetry";
|
||||
|
||||
const UPLOADS_DIR =
|
||||
process.env.WIBU_UPLOAD_DIR || path.join(process.cwd(), "uploads");
|
||||
|
||||
// --- Helper: deteksi kategori file ---
|
||||
function detectCategory(filename: string): "image" | "document" | "other" {
|
||||
const ext = path.extname(filename).toLowerCase();
|
||||
if ([".jpg", ".jpeg", ".png", ".webp"].includes(ext)) return "image";
|
||||
if ([".pdf", ".doc", ".docx"].includes(ext)) return "document";
|
||||
return "other";
|
||||
}
|
||||
|
||||
// --- Helper: recursive walk dir ---
|
||||
async function walkDir(
|
||||
dir: string,
|
||||
fileList: string[] = []
|
||||
): Promise<string[]> {
|
||||
const entries = await fs.readdir(dir, { withFileTypes: true });
|
||||
|
||||
for (const entry of entries) {
|
||||
const fullPath = path.join(dir, entry.name);
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
if (entry.name === "__MACOSX") continue; // skip folder sampah
|
||||
await walkDir(fullPath, fileList);
|
||||
} else {
|
||||
if (entry.name.startsWith(".") || entry.name === ".DS_Store") continue; // skip file sampah
|
||||
fileList.push(fullPath);
|
||||
}
|
||||
}
|
||||
|
||||
return fileList;
|
||||
}
|
||||
import { getAllDownloadUrls } from "./lib/get_images";
|
||||
|
||||
export default async function seedAssets() {
|
||||
console.log("🚀 Seeding assets...");
|
||||
const images = await getAllDownloadUrls();
|
||||
|
||||
// 1. Download zip
|
||||
const url =
|
||||
"https://cld-dkr-makuro-seafile.wibudev.com/f/88293b915cf34b939819/?dl=1";
|
||||
const res = await fetchWithRetry(url, 3, 20000);
|
||||
// for (const img of images) {
|
||||
// try {
|
||||
// await prisma.fileStorage.upsert({
|
||||
// where: { name: img.name },
|
||||
// create: {
|
||||
// name: img.name,
|
||||
// category: "image",
|
||||
// mimeType: "image/webp",
|
||||
// link: img.downloadUrl,
|
||||
// path: "images",
|
||||
// realName: img.name,
|
||||
// isActive: true,
|
||||
// },
|
||||
// update: {
|
||||
// link: img.downloadUrl,
|
||||
// isActive: true,
|
||||
// },
|
||||
// });
|
||||
|
||||
// Validasi content-type
|
||||
const contentType = res.headers.get("content-type");
|
||||
if (!contentType?.includes("zip")) {
|
||||
throw new Error(`Invalid content-type (${contentType}). Expected ZIP file`);
|
||||
}
|
||||
// console.log(`✅ ${img.name}`);
|
||||
// } catch (err: any) {
|
||||
// console.error(`❌ ${img.name}`, err.code ?? err);
|
||||
// }
|
||||
// }
|
||||
|
||||
const buffer = Buffer.from(await res.arrayBuffer());
|
||||
|
||||
// Validasi ukuran file
|
||||
if (buffer.length < 100) {
|
||||
throw new Error("Downloaded ZIP is empty or corrupted");
|
||||
}
|
||||
|
||||
// Validasi signature ZIP ("PK")
|
||||
if (buffer.toString("utf8", 0, 2) !== "PK") {
|
||||
throw new Error("Invalid ZIP signature (PK not found)");
|
||||
}
|
||||
|
||||
// 2. Extract zip ke folder tmp
|
||||
const extractDir = path.join(process.cwd(), "tmp_assets");
|
||||
await fs.rm(extractDir, { recursive: true, force: true });
|
||||
await fs.mkdir(extractDir, { recursive: true });
|
||||
|
||||
let zip: AdmZip;
|
||||
|
||||
try {
|
||||
zip = new AdmZip(buffer);
|
||||
} catch (err) {
|
||||
throw new Error("Failed to parse ZIP file (corrupted or invalid)");
|
||||
}
|
||||
|
||||
try {
|
||||
zip.extractAllTo(extractDir, true);
|
||||
} catch (err) {
|
||||
throw new Error("Failed to extract ZIP contents");
|
||||
}
|
||||
|
||||
// 3. Cari semua file valid (recursive)
|
||||
const files = await walkDir(extractDir);
|
||||
|
||||
// 4. Loop tiap file & simpan
|
||||
for (const filePath of files) {
|
||||
const entryName = path.basename(filePath);
|
||||
const category = detectCategory(entryName);
|
||||
|
||||
let finalName = entryName;
|
||||
let mimeType = "application/octet-stream";
|
||||
let targetPath = "";
|
||||
|
||||
if (category === "image") {
|
||||
const fileBaseName = path.parse(entryName).name;
|
||||
finalName = `${fileBaseName}.webp`;
|
||||
targetPath = path.join(UPLOADS_DIR, "images", finalName);
|
||||
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
||||
await sharp(filePath).webp({ quality: 80 }).toFile(targetPath);
|
||||
mimeType = "image/webp";
|
||||
} else if (category === "document") {
|
||||
targetPath = path.join(UPLOADS_DIR, "documents", entryName);
|
||||
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
||||
await fs.copyFile(filePath, targetPath);
|
||||
mimeType = "application/pdf";
|
||||
} else {
|
||||
targetPath = path.join(UPLOADS_DIR, "other", entryName);
|
||||
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
||||
await fs.copyFile(filePath, targetPath);
|
||||
}
|
||||
|
||||
const existing = await prisma.fileStorage.findUnique({
|
||||
where: { name: finalName },
|
||||
});
|
||||
|
||||
if (existing) {
|
||||
// Restore kalau soft deleted
|
||||
await prisma.fileStorage.update({
|
||||
where: { name: finalName },
|
||||
data: {
|
||||
path: targetPath,
|
||||
realName: entryName,
|
||||
mimeType,
|
||||
link: `/uploads/${category}/${finalName}`,
|
||||
category,
|
||||
deletedAt: null,
|
||||
for (const img of images) {
|
||||
try {
|
||||
await prisma.fileStorage.upsert({
|
||||
where: {
|
||||
id: img.name,
|
||||
},
|
||||
create: {
|
||||
name: img.name,
|
||||
category: "image",
|
||||
mimeType: "image/webp",
|
||||
link: img.downloadUrl,
|
||||
path: "images",
|
||||
realName: img.name,
|
||||
isActive: true,
|
||||
},
|
||||
update: {},
|
||||
});
|
||||
|
||||
console.log(`♻️ restored: ${category}/${finalName}`);
|
||||
} else {
|
||||
await prisma.fileStorage.create({
|
||||
data: {
|
||||
name: finalName,
|
||||
realName: entryName,
|
||||
path: targetPath,
|
||||
mimeType,
|
||||
link: `/uploads/${category}/${finalName}`,
|
||||
category,
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`📂 created: ${category}/${finalName}`);
|
||||
console.log(img.name, ": success")
|
||||
} catch (err) {
|
||||
console.log("gagal seed assets", JSON.stringify(err));
|
||||
}
|
||||
|
||||
console.log(`📂 saved: ${category}/${finalName}`);
|
||||
}
|
||||
|
||||
// 6. Cleanup
|
||||
await fs.rm(extractDir, { recursive: true, force: true });
|
||||
|
||||
console.log("✅ Selesai seed assets!");
|
||||
console.log("DB URL (asset):", process.env.DATABASE_URL);
|
||||
|
||||
console.log("🎉 Image seeding completed");
|
||||
}
|
||||
|
||||
// --- Auto run kalau dipanggil langsung ---
|
||||
if (import.meta.main) {
|
||||
seedAssets()
|
||||
.catch((err) => {
|
||||
console.error("❌ Error seeding assets:", err);
|
||||
process.exit(1);
|
||||
.then(() => {
|
||||
console.log("seed assets success");
|
||||
})
|
||||
.finally(async () => {
|
||||
await prisma.$disconnect();
|
||||
.catch((err) => {
|
||||
console.log("gagal seed assets", JSON.stringify(err));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ import {
|
||||
IconMessageReport,
|
||||
IconUsers,
|
||||
IconQuestionMark,
|
||||
IconBook,
|
||||
} from '@tabler/icons-react'
|
||||
|
||||
/* =======================
|
||||
@@ -90,6 +91,7 @@ export type IconKey =
|
||||
| 'informasi'
|
||||
| 'pengaduan'
|
||||
| 'layananPublik'
|
||||
| 'book'
|
||||
|
||||
/* =======================
|
||||
Icon Map
|
||||
@@ -138,6 +140,7 @@ const iconMap: Record<IconKey, React.FC<any>> = {
|
||||
informasi: IconInfoCircle,
|
||||
pengaduan: IconMessageReport,
|
||||
layananPublik: IconUsers,
|
||||
book: IconBook
|
||||
}
|
||||
|
||||
/* =======================
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Box, rem, Select } from '@mantine/core';
|
||||
import {
|
||||
IconAlertTriangle,
|
||||
IconAmbulance,
|
||||
IconBook,
|
||||
IconBuilding,
|
||||
IconBuildingCommunity,
|
||||
IconCash,
|
||||
@@ -85,6 +86,7 @@ const iconMap = {
|
||||
informasi: { label: 'Informasi', icon: IconInfoCircle },
|
||||
pengaduan: { label: 'Pengaduan', icon: IconMessageReport },
|
||||
layananPublik: { label: 'Layanan Publik', icon: IconUsers },
|
||||
book: { label: 'Buku', icon: IconBook }
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import {
|
||||
IconShield,
|
||||
IconStethoscope,
|
||||
IconUsers,
|
||||
IconBook,
|
||||
} from '@tabler/icons-react';
|
||||
|
||||
const iconMap = {
|
||||
@@ -83,6 +84,7 @@ const iconMap = {
|
||||
informasi: { label: 'Informasi', icon: IconInfoCircle },
|
||||
pengaduan: { label: 'Pengaduan', icon: IconMessageReport },
|
||||
layananPublik: { label: 'Layanan Publik', icon: IconUsers },
|
||||
book: { label: 'Buku', icon: IconBook }
|
||||
};
|
||||
|
||||
export type IconKey = keyof typeof iconMap;
|
||||
|
||||
@@ -552,7 +552,7 @@ const maskotDesa = proxy({
|
||||
deskripsi: profileData.deskripsi || "",
|
||||
images: (profileData.images || []).map((img) => ({
|
||||
label: img.label,
|
||||
imageId: img.image.id,
|
||||
imageId: img?.image?.id || "",
|
||||
})),
|
||||
};
|
||||
},
|
||||
|
||||
@@ -400,6 +400,42 @@ const kategoriBuku = proxy({
|
||||
}
|
||||
},
|
||||
},
|
||||
findManyAll: {
|
||||
data: [] as Prisma.KategoriBukuGetPayload<{
|
||||
omit: {
|
||||
isActive: true;
|
||||
};
|
||||
}>[],
|
||||
loading: false,
|
||||
search: "",
|
||||
load: async (search = "") => {
|
||||
// Change to arrow function
|
||||
kategoriBuku.findManyAll.loading = true; // Use the full path to access the property
|
||||
kategoriBuku.findManyAll.search = search;
|
||||
try {
|
||||
const query: any = { search };
|
||||
if (search) query.search = search;
|
||||
|
||||
const res = await ApiFetch.api.pendidikan.perpustakaandigital.kategoribuku[
|
||||
"findManyAll"
|
||||
].get({
|
||||
query,
|
||||
});
|
||||
|
||||
if (res.status === 200 && res.data?.success) {
|
||||
kategoriBuku.findManyAll.data = res.data.data || [];
|
||||
} else {
|
||||
console.error("Failed to load pegawai:", res.data?.message);
|
||||
kategoriBuku.findManyAll.data = [];
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error loading pegawai:", error);
|
||||
kategoriBuku.findManyAll.data = [];
|
||||
} finally {
|
||||
kategoriBuku.findManyAll.loading = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
findUnique: {
|
||||
data: null as Prisma.KategoriBukuGetPayload<{
|
||||
omit: {
|
||||
|
||||
@@ -222,7 +222,6 @@ function ListKategoriBerita({ search }: { search: string }) {
|
||||
</Stack>
|
||||
</Paper>
|
||||
|
||||
{totalPages > 1 && (
|
||||
<Center mt={{ base: 'lg', md: 'xl' }}>
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -235,7 +234,6 @@ function ListKategoriBerita({ search }: { search: string }) {
|
||||
radius="md"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
|
||||
{/* Modal Konfirmasi Hapus */}
|
||||
<ModalKonfirmasiHapus
|
||||
|
||||
@@ -186,7 +186,6 @@ function ListAjukanPermohonan({ search }: { search: string }) {
|
||||
</Box>
|
||||
</Paper>
|
||||
|
||||
{totalPages > 1 && (
|
||||
<Center mt="md">
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -199,7 +198,6 @@ function ListAjukanPermohonan({ search }: { search: string }) {
|
||||
radius="md"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ function Page() {
|
||||
<Card withBorder key={idx} p="xs" w={{ base: '100%', md: 180 }}>
|
||||
<Center>
|
||||
<Image
|
||||
src={img.image.link}
|
||||
src={ img?.image?.link || '/no-image.jpg'}
|
||||
alt={img.label}
|
||||
w={150}
|
||||
h={150}
|
||||
@@ -562,7 +562,7 @@ function Page() {
|
||||
<Card withBorder key={idx} p="xs" w={{ base: '100%', md: 180 }}>
|
||||
<Center>
|
||||
<Image
|
||||
src={img.image.link}
|
||||
src={img?.image?.link || '/no-image.jpg'}
|
||||
alt={img.label}
|
||||
w={150}
|
||||
h={150}
|
||||
|
||||
@@ -267,8 +267,6 @@ function ListPendapatan({ search }: { search: string }) {
|
||||
</Stack>
|
||||
</Paper>
|
||||
|
||||
{/* Pagination */}
|
||||
{totalPages > 1 && (
|
||||
<Center mt={{ base: 'sm', md: 'md' }} mb={{ base: 'sm', md: 'md' }}>
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -282,7 +280,6 @@ function ListPendapatan({ search }: { search: string }) {
|
||||
size="sm"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
|
||||
{/* Modal Konfirmasi Hapus */}
|
||||
<ModalKonfirmasiHapus
|
||||
|
||||
@@ -284,7 +284,6 @@ function ListPosisiOrganisasiBumDes({ search }: { search: string }) {
|
||||
</Box>
|
||||
</Paper>
|
||||
|
||||
{totalPages > 1 && (
|
||||
<Center>
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -299,7 +298,6 @@ function ListPosisiOrganisasiBumDes({ search }: { search: string }) {
|
||||
radius="md"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
|
||||
{/* Modal Hapus */}
|
||||
<ModalKonfirmasiHapus
|
||||
|
||||
@@ -224,7 +224,6 @@ function ListDetailDataPengangguran({ search }: { search: string }) {
|
||||
</Paper>
|
||||
|
||||
{/* Pagination */}
|
||||
{totalPages > 1 && (
|
||||
<Center>
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -239,7 +238,6 @@ function ListDetailDataPengangguran({ search }: { search: string }) {
|
||||
radius="md"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
|
||||
{/* Chart Section */}
|
||||
<Paper withBorder bg={colors['white-1']} p={{ base: 'sm', md: 'lg' }} shadow="md" radius="md">
|
||||
|
||||
@@ -84,6 +84,13 @@ function CreateProgramKreatifDesa() {
|
||||
required
|
||||
/>
|
||||
|
||||
<TextInput
|
||||
label={<Text fz="sm" fw="bold">Deskripsi Singkat</Text>}
|
||||
placeholder="Masukkan deskripsi singkat"
|
||||
value={stateCreate.create.form.slug || ''}
|
||||
onChange={(e) => stateCreate.create.form.slug = e.currentTarget.value}
|
||||
/>
|
||||
|
||||
<YearPickerInput
|
||||
clearable
|
||||
value={stateCreate.create.form.tahun ? new Date(stateCreate.create.form.tahun, 0, 1) : null}
|
||||
@@ -95,6 +102,13 @@ function CreateProgramKreatifDesa() {
|
||||
}}
|
||||
/>
|
||||
|
||||
<TextInput
|
||||
label={<Text fz="sm" fw="bold">Kolaborator</Text>}
|
||||
placeholder="Masukkan kolaborator"
|
||||
value={stateCreate.create.form.kolaborator || ''}
|
||||
onChange={(e) => stateCreate.create.form.kolaborator = e.currentTarget.value}
|
||||
/>
|
||||
|
||||
<Box>
|
||||
<Text fw="bold" fz="sm" mb={6}>
|
||||
Deskripsi
|
||||
@@ -103,14 +117,7 @@ function CreateProgramKreatifDesa() {
|
||||
value={stateCreate.create.form.deskripsi}
|
||||
onChange={(val) => stateCreate.create.form.deskripsi = val}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<TextInput
|
||||
label={<Text fz="sm" fw="bold">Kolaborator</Text>}
|
||||
placeholder="Masukkan kolaborator"
|
||||
value={stateCreate.create.form.kolaborator || ''}
|
||||
onChange={(e) => stateCreate.create.form.kolaborator = e.currentTarget.value}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<Group justify="right" mt="md">
|
||||
<Button
|
||||
|
||||
@@ -245,7 +245,6 @@ function ListKolaborasiInovasi({ search }: { search: string }) {
|
||||
</Box>
|
||||
</Paper>
|
||||
|
||||
{totalPages > 1 && (
|
||||
<Center>
|
||||
<Pagination
|
||||
value={page}
|
||||
@@ -260,7 +259,6 @@ function ListKolaborasiInovasi({ search }: { search: string }) {
|
||||
radius="md"
|
||||
/>
|
||||
</Center>
|
||||
)}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user