Compare commits

...

14 Commits

Author SHA1 Message Date
b69df2454e Fix Coba lagi image stagging 2026-02-05 14:29:44 +08:00
df198c320a Seed create 2026-02-05 14:03:40 +08:00
f550e29a75 Fix ke 3 Env dan seafile 2026-02-05 12:34:31 +08:00
bb7384f1e5 Fix Seed Profile PPID
Fix Seed Visi Misi Desa Profile Desa
2026-02-05 12:06:20 +08:00
df154806f7 Fix image di seafile sudah tidak pakai token tapi by folder di seafile
Kasih console di page profil ppid & visi misi di Profile Desa
2026-02-05 11:10:30 +08:00
25000d0b0f PPID > Profile PPID
Desa >  Profile Visi Misi Desa
Keamanan >  Pencegahan Kriminalitas  Grid Kiri  Datanya  Mepet
Keamanan >  Laporan  Publik
Ekonomi  >  Sektor Unggulan Desa Coba tampilin 3  Aja
2026-02-04 16:59:49 +08:00
bbd52fb6f5 Fix Jam Operasional Kantor Desa
Fix Agar Token Seafile ga expired cuma 1 hari
2026-02-04 11:47:56 +08:00
358ff14efe Seeder Menu Lingkungan dan Pendidikan
Fix Jam Operasional Kantor Desa Darmasaba
2026-02-03 16:53:15 +08:00
6c36a15290 Seed Menu Ekonomi
Seed MEnu Inovasi
Sisa 2 Menu
2026-02-02 17:31:27 +08:00
da585dde99 seed kesheatan
seed keamanan
2026-02-02 15:05:53 +08:00
8afbaabd91 Fix Eror Code get_images.ts (1) 2026-01-30 17:15:39 +08:00
f0425cfc47 Fix Seeder Image, Menu Landing Page - Desa 2026-01-30 15:55:05 +08:00
c2ad515366 Fix Seed Image 27 Jan 2026-01-27 10:50:33 +08:00
d9ce4aac6d Seed Pendidikan 2026-01-23 16:51:35 +08:00
167 changed files with 8436 additions and 4945 deletions

3
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"recommendations": []
}

167
AGENTS.md Normal file
View 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

0
QWEN.md Normal file
View File

BIN
bun.lockb

Binary file not shown.

99
gambar.ttx Normal file
View 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);
}
})();

View File

@@ -50,10 +50,12 @@
"add": "^2.0.6",
"adm-zip": "^0.5.16",
"animate.css": "^4.1.1",
"async-mutex": "^0.5.0",
"bcryptjs": "^3.0.2",
"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",
@@ -104,6 +106,7 @@
},
"devDependencies": {
"@eslint/eslintrc": "^3",
"@types/cli-progress": "^3.11.6",
"@types/jsonwebtoken": "^9.0.10",
"@types/node": "^20",
"@types/react": "^19",

View 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");
}

View 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");
}

View 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 ...");
}

View 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 ...");
}

View 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 ...");
}

View 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 ...");
}

View 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 ...");
}

View File

@@ -0,0 +1,168 @@
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";
import visiMisiDesa from "../../../data/desa/profile/visi_misi_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 ...");
// =========== VISI MISI DESA ===========
for (const l of visiMisiDesa) {
await prisma.visiMisiDesa.upsert({
where: {
id: l.id,
},
update: {
visi: l.visi,
misi: l.misi,
},
create: {
id: l.id,
visi: l.visi,
misi: l.misi,
},
});
}
console.log("visi misi 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 ...");
}

View File

@@ -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");
}

View File

@@ -0,0 +1,25 @@
import prisma from "@/lib/prisma";
import demografiPekerjaan from "../../data/ekonomi/demografi-pekerjaan/demografi-pekerjaan.json";
export async function seedDemografiPekerjaan() {
console.log("🔄 Seeding Demografi Pekerjaan...");
for (const k of demografiPekerjaan) {
await prisma.dataDemografiPekerjaan.upsert({
where: {
id: k.id,
},
update: {
pekerjaan: k.pekerjaan,
lakiLaki: k.lakiLaki,
perempuan: k.perempuan,
},
create: {
id: k.id,
pekerjaan: k.pekerjaan,
lakiLaki: k.lakiLaki,
perempuan: k.perempuan,
},
});
}
console.log("✅ Demografi Pekerjaan seeded successfully");
}

View File

@@ -0,0 +1,23 @@
import prisma from "@/lib/prisma";
import jumlahPendudukMiskin from "../../data/ekonomi/jumlah-penduduk-miskin/jumlah-penduduk-miskin.json";
export async function seedJumlahPendudukMiskin() {
console.log("🔄 Seeding Jumlah Penduduk Miskin...");
for (const k of jumlahPendudukMiskin) {
await prisma.grafikJumlahPendudukMiskin.upsert({
where: {
id: k.id,
},
update: {
year: k.year,
totalPoorPopulation: k.totalPoorPopulation,
},
create: {
id: k.id,
year: k.year,
totalPoorPopulation: k.totalPoorPopulation,
},
});
}
console.log("✅ Jumlah Penduduk Miskin seeded successfully");
}

View File

@@ -0,0 +1,27 @@
import prisma from "@/lib/prisma";
import jumlahPengangguran from "../../data/ekonomi/jumlah-pengangguran/detail-data-pengangguran.json";
export async function seedJumlahPengangguran() {
for (const d of jumlahPengangguran) {
await prisma.detailDataPengangguran.upsert({
where: {
month_year: { month: d.month, year: d.year },
},
update: {
totalUnemployment: d.totalUnemployment,
educatedUnemployment: d.educatedUnemployment,
uneducatedUnemployment: d.uneducatedUnemployment,
percentageChange: d.percentageChange,
},
create: {
month: d.month,
year: d.year,
totalUnemployment: d.totalUnemployment,
educatedUnemployment: d.educatedUnemployment,
uneducatedUnemployment: d.uneducatedUnemployment,
percentageChange: d.percentageChange,
},
});
}
console.log("📊 detailDataPengangguran success ...");
}

View File

@@ -0,0 +1,35 @@
import prisma from "@/lib/prisma";
import lowonganKerjaLokal from "../../data/ekonomi/lowongan-kerja-lokal/lowongan-kerja-lokal.json";
export async function seedLowonganKerjaLokal() {
console.log("🔄 Seeding Lowongan Kerja Lokal...");
for (const k of lowonganKerjaLokal) {
await prisma.lowonganPekerjaan.upsert({
where: {
id: k.id,
},
update: {
posisi: k.posisi,
namaPerusahaan: k.namaPerusahaan,
lokasi: k.lokasi,
tipePekerjaan: k.tipePekerjaan,
gaji: k.gaji,
deskripsi: k.deskripsi,
kualifikasi: k.kualifikasi,
notelp: k.notelp,
},
create: {
id: k.id,
posisi: k.posisi,
namaPerusahaan: k.namaPerusahaan,
lokasi: k.lokasi,
tipePekerjaan: k.tipePekerjaan,
gaji: k.gaji,
deskripsi: k.deskripsi,
kualifikasi: k.kualifikasi,
notelp: k.notelp,
},
});
}
console.log("✅ Lowongan Kerja Lokal seeded successfully");
}

View File

@@ -0,0 +1,91 @@
import prisma from "@/lib/prisma";
import kategoriProduk from "../../data/ekonomi/pasar-desa/kategori-produk.json";
import pasarDesa from "../../data/ekonomi/pasar-desa/pasar-desa.json";
import kategoriToPasar from "../../data/ekonomi/pasar-desa/kategori-to-pasar.json";
export async function seedPasarDesa() {
console.log("🔄 Seeding Kategori Produk...");
for (const k of kategoriProduk) {
await prisma.kategoriProduk.upsert({
where: {
id: k.id,
},
update: {
nama: k.nama,
},
create: {
id: k.id,
nama: k.nama,
},
});
}
console.log("✅ Kategori Produk seeded successfully");
console.log("🔄 Seeding Pasar Desa...");
for (const p of pasarDesa) {
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 pasar desa "${p.nama}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.pasarDesa.upsert({
where: { id: p.id },
update: {
nama: p.nama,
deskripsi: p.deskripsi,
harga: p.harga,
rating: p.rating,
alamatUsaha: p.alamatUsaha,
kontak: p.kontak,
imageId,
kategoriProdukId: p.kategoriProdukId,
},
create: {
id: p.id,
nama: p.nama,
deskripsi: p.deskripsi,
harga: p.harga,
rating: p.rating,
alamatUsaha: p.alamatUsaha,
kontak: p.kontak,
imageId,
kategoriProdukId: p.kategoriProdukId,
},
});
console.log(`✅ Pasar desa seeded: ${p.nama}`);
}
console.log("🎉 Pasar desa seed selesai");
console.log("🔄 Seeding Kategori To Pasar...");
for (const p of kategoriToPasar) {
await prisma.kategoriToPasar.upsert({
where: {
id: p.id,
},
update: {
kategoriId: p.kategoriId,
pasarDesaId: p.pasarDesaId,
},
create: {
id: p.id,
kategoriId: p.kategoriId,
pasarDesaId: p.pasarDesaId,
},
});
}
}

View File

@@ -0,0 +1,81 @@
import prisma from "@/lib/prisma";
import apbdes from "../../data/ekonomi/pendapatan-asli-desa/apbDesa.json";
import pendapatan from "../../data/ekonomi/pendapatan-asli-desa/pendapatanDesa.json";
import belanja from "../../data/ekonomi/pendapatan-asli-desa/belanjaDesa.json";
import pembiayaan from "../../data/ekonomi/pendapatan-asli-desa/pembiayaanDesa.json";
export async function seedPendapatanAsli() {
console.log("🔄 Seeding Pendapatan Asli...");
for (const d of apbdes) {
await prisma.apbDesa.upsert({
where: {
id: d.id,
},
update: {
tahun: d.tahun,
},
create: {
id: d.id,
tahun: d.tahun,
},
});
}
console.log("✅ Pendapatan Asli seeded successfully");
console.log("🔄 Seeding Pendapatan...");
for (const d of pendapatan) {
await prisma.pendapatan.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
value: d.nilai
},
create: {
id: d.id,
name: d.name,
value: d.nilai
},
});
}
console.log("✅ Pendapatan seeded successfully");
console.log("🔄 Seeding Belanja...");
for (const d of belanja) {
await prisma.belanja.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
value: d.nilai
},
create: {
id: d.id,
name: d.name,
value: d.nilai
},
});
}
console.log("✅ Belanja seeded successfully");
console.log("🔄 Seeding Pembiayaan...");
for (const d of pembiayaan) {
await prisma.pembiayaan.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
value: d.nilai
},
create: {
id: d.id,
name: d.name,
value: d.nilai
},
});
}
console.log("✅ Pembiayaan seeded successfully");
}

View File

@@ -0,0 +1,50 @@
import prisma from "@/lib/prisma";
import grafikMenganggurBerdasarkanUsia from "../../data/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran-berdasarkan-usia.json";
import grafikMenganggurBerdasarkanPendidikan from "../../data/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran-berdasarkan-pendidikan.json";
export async function seedPendudukUsiaKerjaYangMenganggur() {
for (const p of grafikMenganggurBerdasarkanUsia) {
await prisma.grafikMenganggurBerdasarkanUsia.upsert({
where: {
id: p.id,
},
update: {
usia18_25: p.usia18_25,
usia26_35: p.usia26_35,
usia36_45: p.usia36_45,
usia46_keatas: p.usia46_keatas,
},
create: {
id: p.id,
usia18_25: p.usia18_25,
usia26_35: p.usia26_35,
usia36_45: p.usia36_45,
usia46_keatas: p.usia46_keatas,
},
});
}
console.log("📊 grafikMenganggurBerdasarkanUsia success ...");
for (const p of grafikMenganggurBerdasarkanPendidikan) {
await prisma.grafikMenganggurBerdasarkanPendidikan.upsert({
where: {
id: p.id,
},
update: {
SD: p.SD,
SMP: p.SMP,
SMA: p.SMA,
D3: p.D3,
S1: p.S1,
},
create: {
id: p.id,
SD: p.SD,
SMP: p.SMP,
SMA: p.SMA,
D3: p.D3,
S1: p.S1,
},
});
}
console.log("📊 grafikMenganggurBerdasarkanUsia success ...");
}

View File

@@ -0,0 +1,50 @@
import prisma from "@/lib/prisma";
import programKemiskinan from "../../data/ekonomi/program-kemiskinan/program-kemiskinan.json";
import statistikKemiskinan from "../../data/ekonomi/program-kemiskinan/statistik-kemiskinan.json";
export async function seedProgramKemiskinan() {
for (const s of statistikKemiskinan) {
await prisma.statistikKemiskinan.upsert({
where: { tahun: s.tahun }, // ✅ FIX
update: {
jumlah: s.jumlah,
},
create: {
id: s.id, // id boleh tetap
tahun: s.tahun,
jumlah: s.jumlah,
},
});
}
console.log("📊 Statistik Kemiskinan seeded successfully");
console.log("🔄 Seeding Program Kemiskinan...");
for (const k of programKemiskinan) {
await prisma.programKemiskinan.upsert({
where: { id: k.id },
update: {
nama: k.nama,
deskripsi: k.deskripsi,
icon: k.icon,
statistik: {
connect: {
tahun: k.tahun, // 👈 BUKAN ID
},
},
},
create: {
id: k.id,
nama: k.nama,
deskripsi: k.deskripsi,
icon: k.icon,
statistik: {
connect: {
tahun: k.tahun,
},
},
},
});
}
console.log("✅ Program Kemiskinan seeded successfully");
}

View File

@@ -0,0 +1,25 @@
import prisma from "@/lib/prisma";
import sektorUnggulanDesa from "../../data/ekonomi/sektor-unggulan/sektor-unggulan.json";
export async function seedSektorUnggulanDesa() {
console.log("🔄 Seeding Sektor Unggulan Desa...");
for (const k of sektorUnggulanDesa) {
await prisma.sektorUnggulanDesa.upsert({
where: {
id: k.id,
},
update: {
name: k.name,
description: k.description,
value: k.value,
},
create: {
id: k.id,
name: k.name,
description: k.description,
value: k.value,
},
});
}
console.log("✅ Sektor Unggulan Desa seeded successfully");
}

View File

@@ -0,0 +1,58 @@
import prisma from "@/lib/prisma";
import posisiOrganisasiBumDes from "../../data/ekonomi/struktur-organisasi/posisi-organisasi-bumdes.json";
import pegawai from "../../data/ekonomi/struktur-organisasi/pegawai-bumdes.json";
export async function seedStrukturBumdes() {
const flattenedPosisi = posisiOrganisasiBumDes.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.posisiOrganisasiBumDes.upsert({
where: { id: p.id },
update: p,
create: p,
});
}
console.log("posisi organisasi berhasil");
for (const p of pegawai) {
await prisma.pegawaiBumDes.upsert({
where: {
id: p.id,
},
update: {
namaLengkap: p.namaLengkap,
gelarAkademik: p.gelarAkademik,
tanggalMasuk: new Date(p.tanggalMasuk),
email: p.email,
telepon: p.telepon,
alamat: p.alamat,
posisiId: p.posisiId,
isActive: p.isActive,
},
create: {
id: p.id,
namaLengkap: p.namaLengkap,
gelarAkademik: p.gelarAkademik,
tanggalMasuk: new Date(p.tanggalMasuk),
email: p.email,
telepon: p.telepon,
alamat: p.alamat,
posisiId: p.posisiId,
isActive: p.isActive,
},
});
}
console.log("pegawai success ...");
}

View File

@@ -0,0 +1,31 @@
import prisma from "@/lib/prisma";
import ajukanIde from "../../data/inovasi/ajukan-ide/ajukan-ide.json";
export async function seedAjukan() {
console.log("🔄 Seeding Ajukan Ide Inovatif...");
for (const d of ajukanIde) {
await prisma.ajukanIdeInovatif.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
alamat: d.alamat,
namaIde: d.namaIde,
deskripsi: d.deskripsi,
masalah: d.masalah,
benefit: d.benefit,
},
create: {
id: d.id,
name: d.name,
alamat: d.alamat,
namaIde: d.namaIde,
deskripsi: d.deskripsi,
masalah: d.masalah,
benefit: d.benefit,
},
});
}
console.log("✅ Ajukan Ide Inovatif seeded successfully");
}

View File

@@ -0,0 +1,42 @@
import prisma from "@/lib/prisma";
import desaDigital from "../../data/inovasi/desa-digital/desa-digital.json";
export async function seedDesaDigital() {
console.log("🔄 Seeding Desa Digital...");
for (const d of desaDigital) {
let imageId: string | null = null;
if (d.imageName) {
const image = await prisma.fileStorage.findUnique({
where: { name: d.imageName },
select: { id: true },
});
if (!image) {
console.warn(
`⚠️ Image not found for desa digital "${d.name}": ${d.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.desaDigital.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
deskripsi: d.deskripsi,
imageId: imageId,
},
create: {
id: d.id,
name: d.name,
deskripsi: d.deskripsi,
imageId: imageId,
},
});
}
console.log("✅ Desa Digital seeded successfully");
}

View File

@@ -0,0 +1,42 @@
import prisma from "@/lib/prisma";
import infoTeknologi from "../../data/inovasi/info-teknologi/info-teknologi.json";
export async function seedInfoTeknologi() {
console.log("🔄 Seeding Info Teknologi...");
for (const p of infoTeknologi) {
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 berita "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.infoTekno.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
deskripsi: p.deskripsi,
imageId: imageId,
},
create: {
id: p.id,
name: p.name,
deskripsi: p.deskripsi,
imageId: imageId,
},
});
}
console.log("✅ Info Teknologi seeded successfully");
}

View File

@@ -0,0 +1,66 @@
import prisma from "@/lib/prisma";
import kolaborasiInovasi from "../../data/inovasi/kolaborasi-inovasi/kolaborasi-inovasi.json";
import mitraKolaborasi from "../../data/inovasi/kolaborasi-inovasi/mitra-kolaborasi.json";
export async function seedKolaborasiInovasi() {
console.log("🔄 Seeding Kolaborasi Inovasi...");
for (const p of kolaborasiInovasi) {
await prisma.kolaborasiInovasi.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
tahun: p.tahun,
slug: p.slug,
deskripsi: p.deskripsi,
kolaborator: p.kolaborator,
},
create: {
id: p.id,
name: p.name,
tahun: p.tahun,
slug: p.slug,
deskripsi: p.deskripsi,
kolaborator: p.kolaborator,
},
});
}
console.log("✅ Kolaborasi Inovasi seeded successfully");
console.log("🔄 Seeding Mitra Kolaborasi...");
for (const p of mitraKolaborasi) {
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 mitra kolaborasi "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.mitraKolaborasi.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
imageId: imageId,
},
create: {
id: p.id,
name: p.name,
imageId: imageId,
},
});
}
console.log("✅ Mitra Kolaborasi seeded successfully");
}

View File

@@ -0,0 +1,113 @@
import prisma from "@/lib/prisma";
import jenisLayanan from "../../data/inovasi/layanan-online-desa/jenis-layanan.json";
import administrasiOnline from "../../data/inovasi/layanan-online-desa/administrasi-online.json";
import jenisPengaduan from "../../data/inovasi/layanan-online-desa/jenis-pengaduan.json";
import pengaduanMasyarakat from "../../data/inovasi/layanan-online-desa/pengaduan-masyarakat.json";
export async function seedLayananOnlineDesa() {
console.log("🔄 Seeding Jenis Layanan...");
for (const j of jenisLayanan) {
await prisma.jenisLayanan.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
deskripsi: j.deskripsi,
},
create: {
id: j.id,
nama: j.nama,
deskripsi: j.deskripsi,
},
});
}
console.log("✅ Jenis Layanan seeded successfully");
console.log("🔄 Seeding Administrasi Online...");
for (const d of administrasiOnline) {
await prisma.administrasiOnline.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
alamat: d.alamat,
nomorTelepon: d.nomorTelepon,
jenisLayananId: d.jenisLayananId,
},
create: {
id: d.id,
name: d.name,
alamat: d.alamat,
nomorTelepon: d.nomorTelepon,
jenisLayananId: d.jenisLayananId,
},
});
}
console.log("✅ Administrasi Online seeded successfully");
console.log("🔄 Seeding Jenis Pengaduan Masyarakat...");
for (const d of jenisPengaduan) {
await prisma.jenisPengaduan.upsert({
where: {
id: d.id,
},
update: {
nama: d.nama,
},
create: {
id: d.id,
nama: d.nama,
},
});
}
console.log("✅ Jenis Pengaduan Masyarakat seeded successfully");
console.log("🔄 Seeding Pengaduan Masyarakat...");
for (const d of pengaduanMasyarakat) {
let imageId: string | null = null;
if (d.imageName) {
const image = await prisma.fileStorage.findUnique({
where: { name: d.imageName },
select: { id: true },
});
if (!image) {
console.warn(
`⚠️ Image not found for pengaduan masyarakat "${d.name}": ${d.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.pengaduanMasyarakat.upsert({
where: {
id: d.id,
},
update: {
name: d.name,
email: d.email,
nik: d.nik,
nomorTelepon: d.nomorTelepon,
judulPengaduan: d.judulPengaduan,
lokasiKejadian: d.lokasiKejadian,
imageId: imageId,
deskripsiPengaduan: d.deskripsiPengaduan,
jenisPengaduanId: d.jenisPengaduanId,
},
create: {
id: d.id,
name: d.name,
email: d.email,
nik: d.nik,
nomorTelepon: d.nomorTelepon,
judulPengaduan: d.judulPengaduan,
lokasiKejadian: d.lokasiKejadian,
imageId: imageId,
deskripsiPengaduan: d.deskripsiPengaduan,
jenisPengaduanId: d.jenisPengaduanId,
},
});
}
console.log("✅ Pengaduan Masyarakat seeded successfully");
}

View File

@@ -0,0 +1,27 @@
import prisma from "@/lib/prisma";
import programKreatif from "../../data/inovasi/program-kreatif-desa/program-kreatif-desa.json";
export async function seedProgramKreatifDesa() {
console.log("🔄 Seeding Program Kreatif...");
for (const p of programKreatif) {
await prisma.programKreatif.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
deskripsi: p.deskripsi,
icon: p.icon,
slug: p.slug,
},
create: {
id: p.id,
name: p.name,
deskripsi: p.deskripsi,
icon: p.icon,
slug: p.slug,
},
});
}
console.log("✅ Program Kreatif seeded successfully");
}

View File

@@ -0,0 +1,44 @@
import prisma from "@/lib/prisma";
import keamananLingkunganJson from "../../data/keamanan/keamanan-lingkungan/keamanan-lingkungan.json";
export async function seedKeamananLingkungan() {
console.log("🔄 Seeding Keamanan Lingkungan...");
for (const p of keamananLingkunganJson) {
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 keamanan lingkungan "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.keamananLingkungan.upsert({
where: { id: p.id },
update: {
name: p.name,
deskripsi: p.deskripsi,
imageId,
},
create: {
id: p.id,
name: p.name,
deskripsi: p.deskripsi,
imageId,
},
});
console.log(`✅ Keamanan lingkungan seeded: ${p.name}`);
}
console.log("🎉 Keamanan lingkungan seed selesai");
}

View File

@@ -0,0 +1,87 @@
import prisma from "@/lib/prisma";
import kontakDaruratKeamanan from "../../data/keamanan/kontak-darurat-keamanan/kontak-darurat-keamanan.json";
import kontakItem from "../../data/keamanan/kontak-darurat-keamanan/kontakItem.json";
import kontakDaruratToItem from "../../data/keamanan/kontak-darurat-keamanan/kontakDaruratToItem.json";
export async function seedKontakDaruratKeamanan() {
console.log("🔄 Seeding Kontak Item...");
for (const e of kontakItem) {
await prisma.kontakItem.upsert({
where: {
id: e.id,
},
update: {
nama: e.nama,
icon: e.icon,
nomorTelepon: e.nomorTelepon,
},
create: {
id: e.id, // ✅ WAJIB
nama: e.nama,
icon: e.icon,
nomorTelepon: e.nomorTelepon,
},
});
}
console.log("✅ Kontak Item seeded successfully");
console.log("🔄 Seeding Kontak Darurat Keamanan...");
for (const d of kontakDaruratKeamanan) {
await prisma.kontakDaruratKeamanan.upsert({
where: {
id: d.id,
},
update: {
nama: d.nama,
icon: d.icon,
kategoriId: d.kategoriId,
},
create: {
id: d.id,
nama: d.nama,
icon: d.icon,
kategoriId: d.kategoriId,
},
});
}
console.log("✅ Kontak Darurat Keamanan seeded successfully");
console.log("🔄 Seeding Kontak Darurat To Item...");
for (const f of kontakDaruratToItem) {
// ✅ Validasi foreign keys
const kontakDaruratExists = await prisma.kontakDaruratKeamanan.findUnique({
where: { id: f.kontakDaruratId },
});
const kontakItemExists = await prisma.kontakItem.findUnique({
where: { id: f.kontakItemId },
});
if (!kontakDaruratExists) {
console.warn(
`⚠️ KontakDarurat ${f.kontakDaruratId} not found, skipping...`,
);
continue;
}
if (!kontakItemExists) {
console.warn(`⚠️ KontakItem ${f.kontakItemId} not found, skipping...`);
continue;
}
await prisma.kontakDaruratToItem.upsert({
where: { id: f.id },
update: {
kontakDaruratId: f.kontakDaruratId,
kontakItemId: f.kontakItemId,
},
create: {
id: f.id,
kontakDaruratId: f.kontakDaruratId,
kontakItemId: f.kontakItemId,
},
});
}
console.log("✅ Kontak Darurat To Item seeded successfully");
}

View File

@@ -0,0 +1,49 @@
import prisma from "@/lib/prisma";
import laporanPublik from "../../data/keamanan/laporan-publik/laporan-publik.json";
import penangananLaporan from "../../data/keamanan/laporan-publik/penanganan-laporan.json";
export async function seedLaporanPublik() {
console.log("🔄 Seeding Laporan Publik...");
for (const l of laporanPublik) {
await prisma.laporanPublik.upsert({
where: {
id: l.id,
},
update: {
judul: l.judul,
lokasi: l.lokasi,
tanggalWaktu: l.tanggalWaktu,
kronologi: l.kronologi,
},
create: {
id: l.id,
judul: l.judul,
lokasi: l.lokasi,
tanggalWaktu: l.tanggalWaktu,
kronologi: l.kronologi,
},
});
}
console.log("laporan publik success ...");
console.log("🔄 Seeding Penanganan Laporan...");
for (const l of penangananLaporan) {
await prisma.penangananLaporanPublik.upsert({
where: {
id: l.id,
},
update: {
deskripsi: l.deskripsi,
laporanId: l.laporanId,
},
create: {
id: l.id,
deskripsi: l.deskripsi,
laporanId: l.laporanId,
},
});
}
console.log("penanganan laporan success ...");
}

View File

@@ -0,0 +1,28 @@
import prisma from "@/lib/prisma";
import pencegahanKriminalitas from "../../data/keamanan/pencegahan-kriminalitas/pencegahan-kriminalitas.json";
export async function seedPencegahanKriminalitas() {
console.log("🔄 Seeding Pencegahan Kriminalitas...");
for (const d of pencegahanKriminalitas) {
await prisma.pencegahanKriminalitas.upsert({
where: {
id: d.id,
},
update: {
judul: d.judul,
deskripsi: d.deskripsi,
deskripsiSingkat: d.deskripsiSingkat,
linkVideo: d.linkVideo,
},
create: {
id: d.id,
judul: d.judul,
deskripsi: d.deskripsi,
deskripsiSingkat: d.deskripsiSingkat,
linkVideo: d.linkVideo,
},
});
}
console.log("✅ Pencegahan Kriminalitas seeded successfully");
}

View File

@@ -0,0 +1,80 @@
import prisma from "@/lib/prisma";
import layananPolsek from "../../data/keamanan/polsek-terdekat/layanan-polsek.json";
import polsekTerdekat from "../../data/keamanan/polsek-terdekat/polsek-terdekat.json";
import layananToPolsek from "../../data/keamanan/polsek-terdekat/layanan-to-polsek.json";
export async function seedPolsekTerdekat() {
console.log("🔄 Seeding Layanan Polsek...");
for (const k of layananPolsek) {
await prisma.layananPolsek.upsert({
where: {
id: k.id,
},
update: {
nama: k.nama,
},
create: {
id: k.id,
nama: k.nama,
},
});
}
console.log("layanan polsek success ...");
console.log("🔄 Seeding Polsek Terdekat...");
for (const k of polsekTerdekat) {
await prisma.polsekTerdekat.upsert({
where: {
id: k.id,
},
update: {
nama: k.nama,
jarakKeDesa: k.jarakKeDesa,
alamat: k.alamat,
nomorTelepon: k.nomorTelepon,
jamOperasional: k.jamOperasional,
embedMapUrl: k.embedMapUrl,
namaTempatMaps: k.namaTempatMaps,
alamatMaps: k.alamatMaps,
linkPetunjukArah: k.linkPetunjukArah,
layananPolsekId: k.layananPolsekId,
},
create: {
id: k.id,
nama: k.nama,
jarakKeDesa: k.jarakKeDesa,
alamat: k.alamat,
nomorTelepon: k.nomorTelepon,
jamOperasional: k.jamOperasional,
embedMapUrl: k.embedMapUrl,
namaTempatMaps: k.namaTempatMaps,
alamatMaps: k.alamatMaps,
linkPetunjukArah: k.linkPetunjukArah,
layananPolsekId: k.layananPolsekId,
},
});
}
console.log("polsek terdekat success ...");
console.log("🔄 Seeding Layanan To Polsek...");
for (const k of layananToPolsek) {
await prisma.layananToPolsek.upsert({
where: {
id: k.id,
},
update: {
layananId: k.layananId,
polsekTerdekatId: k.polsekTerdekatId,
},
create: {
id: k.id,
layananId: k.layananId,
polsekTerdekatId: k.polsekTerdekatId,
},
});
}
console.log("layanan to polsek success ...");
}

View File

@@ -0,0 +1,44 @@
import prisma from "@/lib/prisma";
import tipsKeamananJson from "../../data/keamanan/tips-keamanan/tips-keamanan.json";
export async function seedTipsKeamanan() {
console.log("🔄 Seeding Tips Keamanan...");
for (const p of tipsKeamananJson) {
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 tips keamanan "${p.judul}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.menuTipsKeamanan.upsert({
where: { id: p.id },
update: {
judul: p.judul,
deskripsi: p.deskripsi,
imageId,
},
create: {
id: p.id,
judul: p.judul,
deskripsi: p.deskripsi,
imageId,
},
});
console.log(`✅ Tips Keamanan seeded: ${p.judul}`);
}
console.log("🎉 Tips Keamanan seed selesai");
}

View File

@@ -0,0 +1,46 @@
import prisma from "@/lib/prisma";
import infoWabahPenyakitJson from "../../../data/kesehatan/infowabahpenyakit/infowabahpenyakit.json";
export async function seedInfoWabahPenyakit() {
console.log("🔄 Seeding Info Wabah Penyakit...");
for (const p of infoWabahPenyakitJson) {
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 info wabah penyakit "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.infoWabahPenyakit.upsert({
where: { id: p.id },
update: {
name: p.name,
deskripsiSingkat: p.deskripsiSingkat,
deskripsiLengkap: p.deskripsiLengkap,
imageId,
},
create: {
id: p.id,
name: p.name,
deskripsiSingkat: p.deskripsiSingkat,
deskripsiLengkap: p.deskripsiLengkap,
imageId,
},
});
console.log(`✅ Info wabah penyakit seeded: ${p.name}`);
}
console.log("🎉 Info wabah penyakit seed selesai");
}

View File

@@ -0,0 +1,46 @@
import kontakDaruratJson from "../../../data/kesehatan/kontak-darurat/kontak-darurat.json";
import prisma from "@/lib/prisma";
export async function seedKontakDarurat() {
console.log("🔄 Seeding Kontak Darurat...");
for (const p of kontakDaruratJson) {
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 kontak darurat "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.kontakDarurat.upsert({
where: { id: p.id },
update: {
name: p.name,
deskripsi: p.deskripsi,
imageId,
whatsapp: p.whatsapp,
},
create: {
id: p.id,
name: p.name,
deskripsi: p.deskripsi,
imageId,
whatsapp: p.whatsapp,
},
});
console.log(`✅ Kontak darurat seeded: ${p.name}`);
}
console.log("🎉 Kontak darurat seed selesai");
}

View File

@@ -0,0 +1,44 @@
import prisma from "@/lib/prisma";
import penangananDaruratJson from "../../../data/kesehatan/penanganan-darurat/penganan-darurat.json";
export async function seedPenangananDarurat() {
console.log("🔄 Seeding Penanganan Darurat...");
for (const p of penangananDaruratJson) {
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 penanganan darurat "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.penangananDarurat.upsert({
where: { id: p.id },
update: {
name: p.name,
deskripsi: p.deskripsi,
imageId,
},
create: {
id: p.id,
name: p.name,
deskripsi: p.deskripsi,
imageId,
},
});
console.log(`✅ Penanganan darurat seeded: ${p.name}`);
}
console.log("🎉 Penanganan darurat seed selesai");
}

View File

@@ -0,0 +1,48 @@
import prisma from "@/lib/prisma";
import posyanduJson from "../../../data/kesehatan/posyandu/posyandu.json";
export async function seedPosyandu() {
console.log("🔄 Seeding Posyandu...");
for (const p of posyanduJson) {
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 posyandu "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.posyandu.upsert({
where: { id: p.id },
update: {
name: p.name,
nomor: p.nomor,
deskripsi: p.deskripsi,
jadwalPelayanan: p.jadwalPelayanan,
imageId,
},
create: {
id: p.id,
name: p.name,
nomor: p.nomor,
deskripsi: p.deskripsi,
jadwalPelayanan: p.jadwalPelayanan,
imageId,
},
});
console.log(`✅ Posyandu seeded: ${p.name}`);
}
console.log("🎉 Posyandu seed selesai");
}

View File

@@ -0,0 +1,42 @@
import prisma from "@/lib/prisma";
import programKesehatanJson from "../../../data/kesehatan/program-kesehatan/program-kesehatan.json";
export async function seedProgramKesehatan() {
for (const p of programKesehatanJson) {
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 program kesehatan "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.programKesehatan.upsert({
where: { id: p.id },
update: {
name: p.name,
deskripsiSingkat: p.deskripsiSingkat,
deskripsi: p.deskripsi,
imageId,
},
create: {
id: p.id,
name: p.name,
deskripsiSingkat: p.deskripsiSingkat,
deskripsi: p.deskripsi,
imageId,
},
});
console.log(`✅ Program kesehatan seeded: ${p.name}`);
}
}

View File

@@ -0,0 +1,95 @@
import prisma from "@/lib/prisma";
import puskesmasJson from "../../../data/kesehatan/puskesmas/puskesmas.json";
import kontakPuskesmasJson from "../../../data/kesehatan/puskesmas/kontak-puskesmas/kontak.json";
import jamPuskesmasJson from "../../../data/kesehatan/puskesmas/jam-puskesmas/jam.json";
export async function seedPuskesmas() {
console.log("🔄 Seeding Kontak Puskesmas...");
for (const k of kontakPuskesmasJson) {
await prisma.kontakPuskesmas.upsert({
where: {
id: k.id,
},
update: {
kontakPuskesmas: k.kontakPuskesmas,
email: k.email,
facebook: k.facebook,
kontakUGD: k.kontakUGD,
},
create: {
id: k.id,
kontakPuskesmas: k.kontakPuskesmas,
email: k.email,
facebook: k.facebook,
kontakUGD: k.kontakUGD,
},
});
}
console.log("kontak puskesmas success ...");
console.log("🔄 Seeding Jam Puskesmas...");
for (const k of jamPuskesmasJson) {
await prisma.jamOperasional.upsert({
where: {
id: k.id,
},
update: {
workDays: k.workDays,
weekDays: k.weekDays,
holiday: k.holiday,
},
create: {
id: k.id,
workDays: k.workDays,
weekDays: k.weekDays,
holiday: k.holiday,
},
});
}
console.log("jam puskesmas success ...");
console.log("🔄 Seeding Puskesmas...");
for (const p of puskesmasJson) {
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 puskesmas "${p.name}": ${p.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.puskesmas.upsert({
where: { id: p.id },
update: {
name: p.name,
alamat: p.alamat,
jamId: p.jamId,
kontakId: p.kontakId,
imageId,
},
create: {
id: p.id,
name: p.name,
alamat: p.alamat,
jamId: p.jamId,
kontakId: p.kontakId,
imageId,
},
});
console.log(`✅ Puskesmas seeded: ${p.name}`);
}
console.log("🎉 Puskesmas seed selesai");
}

View File

@@ -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 ...");
}

View File

@@ -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 ...");
}

View File

@@ -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 ...");
}

View File

@@ -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");
}

View File

@@ -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}`);
}
}

View 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 ...");
}

View File

@@ -0,0 +1,71 @@
import prisma from "@/lib/prisma";
import kategoriGotongRoyong from "../../data/lingkungan/gotong-royong/kategori-gotong-royong.json";
import gotongRoyong from "../../data/lingkungan/gotong-royong/gotong-royong.json";
export async function seedDataGotongRoyong() {
console.log("🔄 Seeding Kategori Gotong Royong...");
for (const k of kategoriGotongRoyong) {
await prisma.kategoriKegiatan.upsert({
where: {
id: k.id,
},
update: {
nama: k.nama,
},
create: {
id: k.id,
nama: k.nama,
},
});
}
console.log("✅ Kategori Gotong Royong seeded successfully");
console.log("🔄 Seeding Gotong Royong...");
for (const k of gotongRoyong) {
let imageId: string | null = null;
if (k.imageName) {
const image = await prisma.fileStorage.findUnique({
where: { name: k.imageName },
select: { id: true },
});
if (!image) {
console.warn(
`⚠️ Image not found for gotong royong "${k.judul}": ${k.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.kegiatanDesa.upsert({
where: {
id: k.id,
},
update: {
judul: k.judul,
deskripsiSingkat: k.deskripsiSingkat,
deskripsiLengkap: k.deskripsiLengkap,
tanggal: k.tanggal,
lokasi: k.lokasi,
partisipan: k.partisipan,
imageId: imageId,
kategoriKegiatanId: k.kategoriKegiatanId,
},
create: {
id: k.id,
judul: k.judul,
deskripsiSingkat: k.deskripsiSingkat,
deskripsiLengkap: k.deskripsiLengkap,
tanggal: k.tanggal,
lokasi: k.lokasi,
partisipan: k.partisipan,
imageId: imageId,
kategoriKegiatanId: k.kategoriKegiatanId,
},
});
}
console.log("✅ Gotong Royong seeded successfully");
}

View File

@@ -0,0 +1,27 @@
import prisma from "@/lib/prisma";
import dataLingkunganDesa from "../../data/lingkungan/data-lingkungan-desa/data-lingkungan-desa.json";
export async function seedDataLingkunganDesa() {
console.log("🔄 Seeding Data Lingkungan Desa...");
for (const p of dataLingkunganDesa) {
await prisma.dataLingkunganDesa.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
jumlah: p.jumlah,
deskripsi: p.deskripsi,
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
jumlah: p.jumlah,
deskripsi: p.deskripsi,
icon: p.icon,
},
});
}
console.log("✅ Data Lingkungan Desa seeded successfully");
}

View File

@@ -0,0 +1,63 @@
import prisma from "@/lib/prisma";
import tujuanEdukasiLingkungan from "../../data/lingkungan/edukasi-lingkungan/tujuan-edukasi-lingkungan.json";
import materiEdukasiLingkungan from "../../data/lingkungan/edukasi-lingkungan/materi-edukasi-yang-diberikan.json";
import contohEdukasiLingkungan from "../../data/lingkungan/edukasi-lingkungan/contoh-kegiatan-di-desa-darmasaba.json";
export async function seedEdukasiLingkungan() {
for (const e of tujuanEdukasiLingkungan) {
await prisma.tujuanEdukasiLingkungan.upsert({
where: {
id: e.id,
},
update: {
judul: e.judul,
deskripsi: e.deskripsi,
},
create: {
id: e.id,
judul: e.judul,
deskripsi: e.deskripsi,
},
});
}
console.log("tujuan edukasi lingkungan success ...");
for (const m of materiEdukasiLingkungan) {
await prisma.materiEdukasiLingkungan.upsert({
where: {
id: m.id,
},
update: {
judul: m.judul,
deskripsi: m.deskripsi,
},
create: {
id: m.id,
judul: m.judul,
deskripsi: m.deskripsi,
},
});
}
console.log("materi edukasi lingkungan success ...");
for (const c of contohEdukasiLingkungan) {
await prisma.contohEdukasiLingkungan.upsert({
where: {
id: c.id,
},
update: {
judul: c.judul,
deskripsi: c.deskripsi,
},
create: {
id: c.id,
judul: c.judul,
deskripsi: c.deskripsi,
},
});
}
console.log("contoh edukasi lingkungan success ...");
}

View File

@@ -0,0 +1,63 @@
import prisma from "@/lib/prisma";
import filosofiTriHita from "../../data/lingkungan/konservasi-adat-bali/filosofi-tri-hita.json";
import bentukKonservasiBerdasarkanAdat from "../../data/lingkungan/konservasi-adat-bali/bentuk-konservasi.json";
import nilaiKonservasiAdat from "../../data/lingkungan/konservasi-adat-bali/nilai-konservasi-adat.json";
export async function seedKonservasiAdatBali() {
for (const f of filosofiTriHita) {
await prisma.filosofiTriHita.upsert({
where: {
id: f.id,
},
update: {
judul: f.judul,
deskripsi: f.deskripsi,
},
create: {
id: f.id,
judul: f.judul,
deskripsi: f.deskripsi,
},
});
}
console.log("filosofi tri hita success ...");
for (const b of bentukKonservasiBerdasarkanAdat) {
await prisma.bentukKonservasiBerdasarkanAdat.upsert({
where: {
id: b.id,
},
update: {
judul: b.judul,
deskripsi: b.deskripsi,
},
create: {
id: b.id,
judul: b.judul,
deskripsi: b.deskripsi,
},
});
}
console.log("bentuk konservasi berdasarkan adat success ...");
for (const n of nilaiKonservasiAdat) {
await prisma.nilaiKonservasiAdat.upsert({
where: {
id: n.id,
},
update: {
judul: n.judul,
deskripsi: n.deskripsi,
},
create: {
id: n.id,
judul: n.judul,
deskripsi: n.deskripsi,
},
});
}
console.log("nilai konservasi adat success ...");
}

View File

@@ -0,0 +1,51 @@
import prisma from "@/lib/prisma";
import pengelolaanSampah from "../../data/lingkungan/pengelolaan-sampah/pengelolaan-sampah.json";
import keteranganBankSampah from "../../data/lingkungan/pengelolaan-sampah/keterangan-bank-sampah.json";
export async function seedPengelolaanSampah() {
console.log("🔄 Seeding Pengelolaan Sampah...");
for (const p of pengelolaanSampah) {
await prisma.pengelolaanSampah.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
icon: p.icon,
},
});
}
console.log("✅ Pengelolaan Sampah seeded successfully");
console.log("🔄 Seeding Keterangan Bank Sampah...");
for (const p of keteranganBankSampah) {
await prisma.keteranganBankSampahTerdekat.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
alamat: p.alamat,
namaTempatMaps: p.namaTempatMaps,
linkPetunjukArah: p.linkPetunjukArah,
lat: p.lat,
lng: p.lng,
},
create: {
id: p.id,
name: p.name,
alamat: p.alamat,
namaTempatMaps: p.namaTempatMaps,
linkPetunjukArah: p.linkPetunjukArah,
lat: p.lat,
lng: p.lng,
},
});
}
console.log("✅ Keterangan Bank Sampah seeded successfully");
}

View File

@@ -0,0 +1,27 @@
import prisma from "@/lib/prisma";
import programPenghijauan from "../../data/lingkungan/program-penghijauan/program-penghijauan.json";
export async function seedProgramPenghijauan() {
console.log("🔄 Seeding Program Penghijauan...");
for (const p of programPenghijauan) {
await prisma.programPenghijauan.upsert({
where: {
id: p.id,
},
update: {
name: p.name,
judul: p.judul,
deskripsi: p.deskripsi,
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
judul: p.judul,
deskripsi: p.deskripsi,
icon: p.icon,
},
});
}
console.log("✅ Program Penghijauan seeded successfully");
}

View File

@@ -0,0 +1,60 @@
import prisma from "@/lib/prisma";
import tujuanBimbinganBelajarDesa from "../../data/pendidikan/bimbingan-belajar-desa/tujuan-bimbingan-belajar-desa.json";
import lokasiJadwalBimbinganBelajarDesa from "../../data/pendidikan/bimbingan-belajar-desa/lokasi-dan-jadwal.json";
import fasilitasBimbinganBelajarDesa from "../../data/pendidikan/bimbingan-belajar-desa/fasilitas-yang-disediakan.json";
export async function seedBimbinganBelajar() {
for (const t of tujuanBimbinganBelajarDesa) {
await prisma.tujuanBimbinganBelajarDesa.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ tujuan bimbingan belajar desa seeded (editable later via UI)",
);
for (const t of lokasiJadwalBimbinganBelajarDesa) {
await prisma.lokasiJadwalBimbinganBelajarDesa.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ lokasi jadwal bimbingan belajar desa seeded (editable later via UI)",
);
for (const t of fasilitasBimbinganBelajarDesa) {
await prisma.fasilitasBimbinganBelajarDesa.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
}

View File

@@ -0,0 +1,23 @@
import prisma from "@/lib/prisma";
import dataPendidikan from "../../data/pendidikan/data-pendidikan/data-pendidikan.json";
export async function seedDataPendidikan() {
console.log("🔄 Seeding Data pendidikan...");
for (const k of dataPendidikan) {
await prisma.dataPendidikan.upsert({
where: {
id: k.id,
},
update: {
name: k.name,
jumlah: k.jumlah,
},
create: {
id: k.id,
name: k.name,
jumlah: k.jumlah,
},
});
}
console.log("✅ Data pendidikan seeded successfully");
}

View File

@@ -0,0 +1,71 @@
import prisma from "@/lib/prisma";
import dataPerpustakaan from "../../data/pendidikan/perpustakaan-digital/perpustakaan-digital.json";
import kategoriBuku from "../../data/pendidikan/perpustakaan-digital/kategori-buku.json";
export async function seedDataPerpustakaan() {
console.log("🔄 Seeding Kategori Buku...");
for (const k of kategoriBuku) {
await prisma.kategoriBuku.upsert({
where: {
id: k.id,
},
update: {
name: k.name,
},
create: {
id: k.id,
name: k.name,
},
});
}
console.log("✅ Kategori Buku seeded successfully");
console.log("🔄 Seeding Data perpustakaan...");
for (const k of dataPerpustakaan) {
let imageId: string | null = null;
if (k.imageName) {
const image = await prisma.fileStorage.findUnique({
where: { name: k.imageName },
select: { id: true },
});
if (!image) {
console.warn(
`⚠️ Image not found for perpustakaan "${k.judul}": ${k.imageName}`,
);
} else {
imageId = image.id;
}
}
await prisma.dataPerpustakaan.upsert({
where: {
id: k.id,
},
update: {
judul: k.judul,
deskripsi: k.deskripsi,
kategoriId: k.kategoriId,
imageId: imageId
},
create: {
id: k.id,
judul: k.judul,
deskripsi: k.deskripsi,
kategoriId: k.kategoriId,
imageId: imageId
},
});
}
console.log("✅ Data perpustakaan seeded successfully");
}
if (import.meta.main) {
seedDataPerpustakaan()
.then(() => {
console.log("seed data perpustakaan success");
})
.catch((err) => {
console.log("gagal seed data perpustakaan", JSON.stringify(err));
});
}

View File

@@ -0,0 +1,36 @@
import prisma from "@/lib/prisma";
import tujuanProgram from "../../data/pendidikan/program-pendidikan-anak/tujuan-program.json";
import programUnggulan from "../../data/pendidikan/program-pendidikan-anak/program-unggulan.json";
export async function seedInfoProgramPendidikan() {
for (const t of tujuanProgram) {
await prisma.tujuanProgram.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log("✅ tujuan program seeded (editable later via UI)");
for (const t of programUnggulan) {
await prisma.programUnggulan.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log("✅ program unggulan seeded (editable later via UI)");
}

View File

@@ -0,0 +1,74 @@
import prisma from "@/lib/prisma";
import jenjangPendidikan from "../../data/pendidikan/info-sekolah/jenjang-pendidikan.json";
import lembagaPendidikan from "../../data/pendidikan/info-sekolah/lembaga.json";
import siswa from "../../data/pendidikan/info-sekolah/siswa.json";
import pengajar from "../../data/pendidikan/info-sekolah/pengajar.json";
export async function seedInfoSekolah() {
for (const j of jenjangPendidikan) {
await prisma.jenjangPendidikan.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
},
create: {
id: j.id,
nama: j.nama,
},
});
}
console.log("✅ Jenjang Pendidikan seeded successfully");
for (const j of lembagaPendidikan) {
await prisma.lembaga.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
jenjangId: j.jenjangId,
},
create: {
id: j.id,
nama: j.nama,
jenjangId: j.jenjangId,
},
});
}
console.log("✅ Lembaga Pendidikan seeded successfully");
for (const j of siswa) {
await prisma.siswa.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
lembagaId: j.lembagaId,
},
create: {
id: j.id,
nama: j.nama,
lembagaId: j.lembagaId,
},
});
}
console.log("✅ siswa seeded successfully");
for (const j of pengajar) {
await prisma.pengajar.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
lembagaId: j.lembagaId,
},
create: {
id: j.id,
nama: j.nama,
lembagaId: j.lembagaId,
},
});
}
console.log("✅ pengajar seeded successfully");
}

View File

@@ -0,0 +1,60 @@
import prisma from "@/lib/prisma";
import tujuanProgram from "../../data/pendidikan/pendidikan-non-formal/tujuan-program2.json";
import tempatKegiatan from "../../data/pendidikan/pendidikan-non-formal/tempat-kegiatan.json";
import jenisProgramYangDiselenggarakan from "../../data/pendidikan/pendidikan-non-formal/jenis-program-yang-diselenggarakan.json";
export async function seedPendidikanNonFormal() {
for (const t of tujuanProgram) {
await prisma.tujuanPendidikanNonFormal.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
for (const t of tempatKegiatan) {
await prisma.tempatKegiatan.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
for (const t of jenisProgramYangDiselenggarakan) {
await prisma.jenisProgramYangDiselenggarakan.upsert({
where: { id: t.id },
update: {
judul: t.judul,
deskripsi: t.deskripsi,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
},
});
}
console.log(
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
}

View File

@@ -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 ...");
}

View File

@@ -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 ...");
}

View 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 ...");
}

View 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 ...");
}

View 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 ...");
}

View File

@@ -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 ...");
}

View File

@@ -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"
}
]

View 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"
}
]

View File

@@ -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&nbsp;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"
}
]

View File

@@ -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"
}
]

View File

@@ -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 &amp; 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"
}
]

View File

@@ -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"
}
]

View File

@@ -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"
}
]

View 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"
}
]

View File

@@ -3,7 +3,7 @@
"id": "1b7a17ea-83f7-4e73-a94d-96e2b4a623f2",
"nama": "Warung Pasar Darmasaba",
"harga": 30000,
"imageId": "cmkew56ls0000vnysrnzr9ttx",
"imageName": "YdCBnK-bWxlyHjwsk4Qie-mobile.webp",
"rating": 4.3,
"alamatUsaha": "Br. Baler Pasar, Desa Darmasaba, Kec. Abiansemal",
"kontak": "081234567890",
@@ -13,7 +13,7 @@
{
"id": "6dea2257-b710-4cd2-8d94-9b6737e658d8",
"nama": "Jajanan Pasar Bu Made",
"imageId": "cmkewaa2s0001vnysvvs9tu56",
"imageName": "TWdNTZZbTOhFTNJGGPDyG-mobile.webp",
"harga": 5000,
"rating": 4.6,
"alamatUsaha": "Jl. Raya Darmasaba, dekat Banjar Baler Pasar",
@@ -24,7 +24,7 @@
{
"id": "24c6b992-49da-4c6e-aebb-72cf89f75438",
"nama": "Sayur Segar Pak Wayan",
"imageId": "cmkewcvfq0002vnys6985nm90",
"imageName": "mtQsaKtQnhxIYVIooCkiQ-mobile.webp",
"harga": 20000,
"rating": 4.4,
"alamatUsaha": "Area Pasar Desa Darmasaba",
@@ -35,7 +35,7 @@
{
"id": "d62660a2-ac6b-428a-acf6-58cc837ef789",
"nama": "Ayam & Daging Segar Darmasaba",
"imageId": "cmkewf4u90003vnys87en35nj",
"imageName": "Ez-SkRyf_F-1gksz_amNg-mobile.webp",
"harga": 80000,
"rating": 4.2,
"alamatUsaha": "Br. Baler Pasar, Desa Darmasaba",

View File

@@ -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
}
]

View File

@@ -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
}

View File

@@ -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

View File

@@ -3,30 +3,30 @@
"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"
"imageName": "r_gBF0FuFpFPfSENHc4XI-mobile.webp"
},
{
"id": "cmkkshln8000604l8c9b5b4il",
"name": "DDAMART (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"
"imageName": "uE2QwpbcXyBWxVYqCWQQT-mobile.webp"
},
{
"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"
"imageName": "c7xWNyoYp8Cak28NG5NoG-mobile.webp"
},
{
"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"
"imageName": "kN09yF3sahmy-d5EaeGqA-mobile.webp"
},
{
"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"
"imageName": "h_Gd0SoeIJVTi_5TWUO-P-mobile.webp"
}
]

View File

@@ -3,24 +3,24 @@
"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"
"imageName": "xVrwJgdwtcoABPU6DB__Y-mobile.webp"
},
{
"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"
"imageName": "JjUDrfqxuEMYSAza-s7A8-mobile.webp"
},
{
"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"
"imageName": "42RCCpBZla4ZWxXcwx7kG-mobile.webp"
},
{
"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"
"imageName": "TrbkwnYM5rKZeHlISHCX4-mobile.webp"
}
]

View File

@@ -2,16 +2,16 @@
{
"id": "cmkm1ziyi000dvnsweg8lp3f7",
"name": "TP Posyandu Bali",
"imageId": "cmkm1zis2000bvnsw85m6wdlf"
"imageName": "qJFWokQLCaO60j0XJU_33-mobile.webp"
},
{
"id": "cmkm1ziyi000dvnsweg8lq4g8",
"name": "BRI Peduli",
"imageId": "cmkm2dgif000evnswskk0dfo9"
"imageName": "nzLJoEAfl7HkpUcYa8Y1E-mobile.webp"
},
{
"id": "cmkm1ziyi000dvnsweg8lr5h9",
"name": "Universitas Warmadewa (KKN-PMM)",
"imageId": "cmkm2fzub000hvnswnvoytlzs"
"imageName": "JFd5C2FoaZcgDQUmvp-AO-mobile.webp"
}
]

View File

@@ -9,7 +9,7 @@
"deskripsiPengaduan": "<p>Permintaan Pemasangan Spanduk Larangan Bagi Hewan</p>",
"lokasiKejadian": "Banjar Darmasaba Tengah",
"jenisPengaduanId": "eommt91ma000004lb4dpq7ll1",
"imageId": "cmkkxep9l000evni4xkegbk72"
"imageName": "gyNi4s8TnK2UrViU-gN2C-mobile.webp"
},
{
"id": "cmkkrxmub0004vni41cwyhid5",
@@ -21,7 +21,7 @@
"deskripsiPengaduan": "<p>Laporan Anjing Liar Sering Menyerang Warga</p>",
"lokasiKejadian": "Jl. Raya Darmasaba",
"jenisPengaduanId": "eommt91ma000004lb4dpq8mm2",
"imageId": "cmkkx9e38000bvni4azjd3u53"
"imageName": "SQqSobKRg3ShvgPw_H41h-mobile.webp"
},
{
"id": "cmkkrxmub0004vni41cwyhid6",
@@ -33,6 +33,6 @@
"deskripsiPengaduan": "<p>Pengelolaan Sampah Rumah Tangga Belum Efektif</p>",
"lokasiKejadian": "Banjar Bucu",
"jenisPengaduanId": "eommt91ma000004lb4dpq7ll1",
"imageId": "cmkky60sq0000vnjjc55k84d2"
"imageName": "y78xZ2axTOjz87gRKjVAf-mobile.webp"
}
]

View File

@@ -3,18 +3,18 @@
"id": "cmkc2tcs00002vnt9c0ssj05n",
"name": "Sosialisasi dan Pembinaan Keamanan Lingkungan Desa Darmasaba",
"deskripsi": "<p>Pemerintah Desa Darmasaba melaksanakan Sosialisasi dan Pembinaan tentang keamanan dan ketertiban lingkungan kepada warga Perumahan Darmasaba Permai di Wantilan Perum Darmasaba Permai, Desa Darmasaba. Kegiatan ini melibatkan Perbekel Darmasaba, Bhabinkamtibmas, Babinsa, anggota BPD, LPM Desa, KBD dan KBA untuk mengajak warga berperan aktif dalam menjaga keamanan lingkungan, serta mendukung pemasangan lampu penerangan jalan guna mencegah kriminalitas dan kecelakaan di wilayah lingkungan.</p>",
"imageId": "cmkc2tcn30000vnt9esmx8kyb"
"imageName": "K0wY911212dinYA3AFB_f-mobile.webp"
},
{
"id": "cmkc2xmdh0005vnt9ri6f4nk8",
"name": "Sinergi Aparat dan Masyarakat untuk Keamanan Lingkungan",
"deskripsi": "<p>Desa Darmasaba bersama aparat seperti Polres Badung dan elemen masyarakat berkomitmen menjalin sinergi untuk menciptakan keamanan dan ketertiban lingkungan yang kondusif, memperkuat kepedulian serta tindakan nyata dalam menjaga situasi kamtibmas desa.</p>",
"imageId": "cmkc2xm1z0003vnt98682dv0a"
"imageName": "x0_-siY2V8IehBzo4_uph-mobile.webp"
},
{
"id": "cmkc36qbl0008vnt9odvekex6",
"name": "Peran Sistem Keamanan Lingkungan (Siskamling) dan Pecalang di Bali",
"deskripsi": "<p>Sistem keamanan lingkungan (Siskamling) di Bali termasuk di Desa Darmasaba melibatkan kolaborasi antara pemerintah desa, satlinmas, dan pecalang sebagai pranata adat Bali. Sinergi ini penting untuk menjaga ketertiban masyarakat serta harmoni sosial berdasarkan kearifan lokal seperti Tri Hita Karana, meskipun perlu pembinaan dan koordinasi terus menerus dari desa dan aparat terkait.</p>",
"imageId": "cmkc36q2j0006vnt9g87h5it4"
"imageName": "TXknK9CSRSxwvM2hPW6BO-mobile.webp"
}
]

View File

@@ -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"
"imageName": "dSe0xyvNLkP2t2f6iq-Hk-mobile.webp"
},
{
"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"
"imageName": "vwZsaxcoFWDlxG1PW7FC0-mobile.webp"
}
]

View File

@@ -4,34 +4,34 @@
"name": "Diare dan Kolera",
"deskripsiSingkat": "<p>Apa itu Diare dan Kolera penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan Diare dan Kolera yang efektif untuk melindungi keluarga anda.</p>",
"deskripsiLengkap": "<p>Apa itu Diare dan Kolera penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan Diare dan Kolera yang efektif untuk melindungi keluarga anda.</p><ul><li><p>Penyebab: Bakteri Vibrio cholerae (Kolera) atau Escherichia coli (diare) akibat makanan/minuman yang terkontaminasi.</p></li><li><p>Gejala: Buang air besar cair terus-menerus, dehidrasi, dan lemas. Pencegahan: Menjaga kebersihan makanan dan air, serta mencuci tangan dengan sabun.</p></li></ul>",
"imageId": "cmkax3o8g000rvn6ygqpmo1nb"
"imageName": "5giLSHSnWEFoZoMEcjhL7-mobile.webp"
},
{
"id": "cmkax5urc000wvn6yxfw0970w",
"name": "TBC (Tuberkulosis)",
"deskripsiSingkat": "<p>Apa itu TBC penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan TBC yang efektif untuk melindungi keluarga anda.</p>",
"deskripsiLengkap": "<p>Apa itu TBC penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan TBC yang efektif untuk melindungi keluarga anda.</p><p>Penyebab: Bakteri Mycobacterium tuberculosis yang menyebar melalui udara.</p><p>Gejala: Batuk lebih dari 2 minggu, berkeringat di malam hari, dan berat badan turun.</p><p>Pencegahan: Vaksin BCG, pola hidup sehat, dan pengobatan bagi penderita agar tidak menular.</p>",
"imageId": "cmkax5ukz000uvn6yho3aj2nf"
"imageName": "3faPo-1wjhVDVU6S7S8sS-mobile.webp"
},
{
"id": "cmkax72s7000zvn6yz3nmvrry",
"name": "Demam Berdarah Dengue (DBD)",
"deskripsiSingkat": "<p>Yuk Kenali gelaja dan cara penanganan DBD yang efektif untuk melindungi keluarga anda selama musim hujan.</p>",
"deskripsiLengkap": "<p>Apa itu DBD penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan DBD yang efektif untuk melindungi keluarga anda selama musim hujan.</p><p>Penyebab: Virus dengue yang ditularkan oleh nyamuk Aedes aegypti.</p><p>Gejala: Demam tinggi, nyeri sendi, ruam kulit, dan pendarahan ringan.</p><p>Pencegahan: Menguras tempat air, menutup wadah air, fogging, dan menggunakan lotion anti-nyamuk.</p>",
"imageId": "cmkax72nw000xvn6ymcuvlzom"
"imageName": "DyX82oztXbHfu6HEvbrpt-mobile.webp"
},
{
"id": "cmkbyny4f0002vn67kmjmjrpl",
"name": "Fogging sebagai Pencegah DBD di Br. Umahanyar Desa Darmasaba",
"deskripsiSingkat": "<p>Pemerintah Desa Darmasaba melaksanakan fogging di wilayah Br. Umahanyar sebagai upaya pencegahan DBD di Desa Darmasaba.</p>",
"deskripsiLengkap": "<p>Pemerintah Desa Darmasaba melaksanakan fogging (pengasapan) di wilayah Br. Umahanyar Desa Darmasaba Kecamatan Abiansemal Kabupaten Badung dari tanggal 12 sampai dengan 13 April 2023.</p><p>Fogging ini merupakan salah satu metode yang dilakukan oleh Pemdes Darmasaba dalam pencegahan penyakit Demam Berdarah Dengue (DBD) dengan menargetkan nyamuk Aedes aegypti sebagai vektor penyebabnya.</p>",
"imageId": "cmkbynxxo0000vn67wi2nsyl3"
"imageName": "pps1ZgzJxDb4VZxEvtZeu-mobile.webp"
},
{
"id": "cmkbyr3rx0005vn674uhycsxc",
"name": "Gerakan Serentak Penyemprotan Pencegahan PMK di Desa Darmasaba",
"deskripsiSingkat": "<p>Penyemprotan serentak dilakukan di Desa Darmasaba untuk mencegah Penyakit Mulut dan Kaki (PMK) pada hewan ternak.</p>",
"deskripsiLengkap": "<p>Setelah dilakukan vaksinasi Penyakit Mulut dan Kaki (PMK) pada hewan ternak yaitu sapi di wilayah Desa Darmasaba, Pemerintah Desa Darmasaba melaksanakan gerakan serentak penyemprotan pencegahan PMK pada hari Rabu (20/7/2022) di seputaran wilayah Desa Darmasaba.</p><p>Upaya ini dilakukan sebagai bentuk pencegahan terhadap penyebaran PMK dan menjaga kesehatan hewan ternak di desa.</p>",
"imageId": "cmkbyr3mk0003vn673xrqv8xv"
"imageName": "JhJigMo269K1TFGzSB1OS-mobile.webp"
}
]

View File

@@ -3,28 +3,28 @@
"id": "cmkax1vks000qvn6yyxuvfsi8",
"name": "Puskesmas Pembantu Darmasaba",
"deskripsi": "<p>Puskesmas Pembantu Darmasaba merupakan fasilitas kesehatan tingkat pertama yang berada di Desa Darmasaba, melayani berbagai layanan kesehatan masyarakat termasuk pemeriksaan umum dan imunisasi.</p>",
"imageId": "cmkb6488i001fvn6ylkddch1j",
"imageName": "g4ICsRrmOaIqS_yqlQLZK-mobile.webp",
"whatsapp": "089647037430"
},
{
"id": "cmkawzrvg000nvn6ywyx529em",
"name": "UPTD Puskesmas Abiansemal III (melayani Darmasaba)",
"deskripsi": "<p>Puskesmas Abiansemal III adalah fasilitas kesehatan utama di kecamatan Abiansemal yang melayani wilayah Desa Darmasaba dan sekitarnya. Puskesmas ini memiliki layanan 24 jam serta pelayanan darurat kesehatan dasar.</p>",
"imageId": "cmkb681og001gvn6ykb5uasln",
"imageName": "1NkzPzQailqE5yNOiUjB9-mobile.webp",
"whatsapp": "03618463263"
},
{
"id": "cmkawy5in000kvn6yza82pkkg",
"name": "UPTD Puskesmas Abiansemal I",
"deskripsi": "<p>Puskesmas Abiansemal I melayani masyarakat di wilayah kecamatan Abiansemal, termasuk pelayanan kesehatan darurat dan program kesehatan masyarakat.</p>",
"imageId": "cmkb6brrf0000vn14u8c7wnox",
"imageName": "NBPAqjPXn7GQmYTDBI5hu-mobile.webp",
"whatsapp": "087858367111"
},
{
"id": "cmkb6ehu20003vn14ca4xr057",
"name": "Kantor Desa Darmasaba (Kontak Informasi Kesehatan)",
"deskripsi": "<p>Kantor Pemerintahan Desa Darmasaba dapat menjadi saluran kontak awal untuk rujukan layanan kesehatan darurat atau informasi lebih lanjut mengenai fasilitas kesehatan di wilayah desa.</p>",
"imageId": "cmkb6ehpi0001vn14hjp4tdye",
"imageName": "EcQIGOF6LW1dIKE53vmba-mobile.webp",
"whatsapp": "081239580000"
}
]

View File

@@ -3,24 +3,24 @@
"id": "cmkawso7y000evn6ygob15cqb",
"name": "Rembug Stunting di Desa Darmasaba",
"deskripsi": "<p>Pemerintah Desa Darmasaba melaksanakan kegiatan rembug stunting dengan melibatkan bidan desa, kader posyandu, dan tokoh masyarakat. Tujuan kegiatan ini adalah untuk memperkuat upaya pencegahan kekerdilan (stunting) melalui koordinasi layanan kesehatan, edukasi gizi, serta percepatan penanganan gizi buruk di lingkungan desa sebagai bagian dari respons terhadap kondisi kesehatan yang mendesak.</p>",
"imageId": "cmkayz2h8001cvn6yrb7uptjs"
"imageName": "Gi8EX3pBmT719AfzXirDS-mobile.webp"
},
{
"id": "cmkawq3ef000bvn6y387vub0y",
"name": "Posko Kesehatan Darurat dan Bencana",
"deskripsi": "<p>Posko Kesehatan Darurat dan Bencana Desa Darmasaba dibentuk sebagai pusat koordinasi dan pertolongan bagi warga yang terdampak situasi darurat seperti banjir, tanah longsor, atau wabah penyakit. Posko ini dilengkapi dengan tenaga medis, obat-obatan dasar, serta dukungan logistik untuk memastikan penanganan cepat dan tepat sasaran. Kegiatan ini juga melibatkan kader kesehatan desa dan karang taruna sebagai relawan lapangan.</p>",
"imageId": "cmkawq38m0009vn6yi7evbhap"
"imageName": "v7Ac2xQvTiJy-HYh1AxF4-mobile.webp"
},
{
"id": "cmkawso7y000evn6ygob14bpa",
"name": "Layanan Ambulans Desa Darmasaba",
"deskripsi": "<p>Layanan Ambulans Desa Darmasaba disiapkan untuk membantu masyarakat yang membutuhkan transportasi medis darurat ke fasilitas kesehatan terdekat. Layanan ini beroperasi 24 jam dan dapat dihubungi melalui nomor darurat desa. Tim ambulans terdiri dari relawan terlatih dan tenaga medis yang siap memberikan pertolongan pertama di lokasi kejadian sebelum dirujuk ke rumah sakit atau puskesmas.</p>",
"imageId": "cmkawso29000cvn6y879ahra0"
"imageName": "jYxEXspWH5g6eTTVqK72c-mobile.webp"
},
{
"id": "cmkawu7te000hvn6yh3pdnv4w",
"name": "Penanganan Darurat Sosial & Kesehatan Desa Darmasaba",
"deskripsi": "<p>Program Penanganan Darurat Sosial &amp; Kesehatan Desa Darmasaba bertujuan memberikan respon cepat terhadap situasi darurat seperti warga sakit mendadak, kecelakaan, bencana alam, maupun kondisi sosial yang membutuhkan bantuan segera. Tim Siaga Desa Darmasaba berkoordinasi dengan Puskesmas Abiansemal dan BPBD untuk memastikan penanganan yang cepat, tepat, dan manusiawi. Program ini juga mencakup layanan ambulans desa, posko kesehatan darurat, serta bantuan logistik bagi warga terdampak.</p>",
"imageId": "cmkawu7qj000fvn6yubhimyiv"
"imageName": "3tNQ9J8I3Ewq5H8CWuqvp-mobile.webp"
}
]

View File

@@ -5,6 +5,6 @@
"nomor": "(0361) 8463263",
"deskripsi": "<p>Posyandu Pudak Amara merupakan salah satu posyandu aktif di Desa Darmasaba dan pernah berkompetisi dalam lomba kader dan posyandu berprestasi tingkat Provinsi Bali tahun 2025.</p><p>Kegiatan ini melibatkan kader posyandu serta didampingi pihak desa dan puskesmas setempat untuk meningkatkan pelayanan kesehatan ibu dan anak.</p>",
"jadwalPelayanan": "<p>Setiap bulan pada satu hari tertentu (mis. minggu ke-2): 08:00 12:00 WITA (posyandu balita & ibu hamil)</p>",
"imageId": "cmkanjnfh0004vntz8cdbxa7f"
"imageName": "TDQReg1lQ73s39crXW0ra-mobile.webp"
}
]

View File

@@ -4,48 +4,48 @@
"name": "Gerakan Kulkul PKK dan Posyandu Desa Darmasaba",
"deskripsiSingkat": "<p>Kegiatan bersama PKK dan Posyandu untuk meningkatkan pelayanan kesehatan masyarakat.</p>",
"deskripsi": "<p>Pada hari Minggu, 11 Januari 2025, Pemerintah Desa Darmasaba melalui TP PKK dan TP Posyandu melaksanakan kegiatan Gerakan Kulkul PKK dan Posyandu yang berlangsung serentak di seluruh wilayah Desa Darmasaba untuk memperkuat pelayanan kesehatan dasar dan peningkatan partisipasi masyarakat dalam program Posyandu.</p>",
"imageId": "cmkay1e590010vn6y24pgaa1r"
"imageName": "hLeF0GRFZqDUngZnDMAAk-mobile.webp"
},
{
"id": "cmkawmlg40005vn6yja2xiev0",
"name": "Pendampingan Kunjungan Rumah oleh Puskesmas Abiansemal 3",
"deskripsiSingkat": "<p>Pendataan kesehatan penyandang disabilitas lewat kunjungan rumah di Desa Darmasaba.</p>",
"deskripsi": "<p>Pemerintah Desa Darmasaba bersama Kelian Banjar Dinas dan kader kesehatan mendampingi kegiatan kunjungan rumah yang dilaksanakan oleh Puskesmas Abiansemal 3 pada 21 Juli 2025, difokuskan pada pendataan dan pemantauan kondisi kesehatan penyandang disabilitas di Banjar Bersih, Desa Darmasaba.</p>",
"imageId": "cmkay6hob0011vn6ybjwejcej"
"imageName": "hyyTFi8EApjzFEZ9EvJgB-mobile.webp"
},
{
"id": "cmkawnr9k0008vn6ymwv0foiv",
"name": "Kegiatan Aksi Sosial Tim Penggerak Posyandu Provinsi Bali di Desa Darmasaba",
"deskripsiSingkat": "<p>Aksi sosial TP Posyandu Bali untuk memperkuat pelayanan posyandu di desa.</p>",
"deskripsi": "<p>Pada 10 Desember 2025, Desa Darmasaba menjadi lokasi pelaksanaan Aksi Sosial Tim Penggerak Posyandu Provinsi Bali yang bertujuan memperkuat pelayanan Posyandu serta meningkatkan kesejahteraan masyarakat, khususnya keluarga dan balita.</p>",
"imageId": "cmkay8vmd0012vn6ylsk2vzfo"
"imageName": "l4qsUEw2JiclGAkkrXp9g-mobile.webp"
},
{
"id": "cmkawnr9k0008vn6ymwv0dpjw",
"name": "Inovasi BAJRA dalam Penanggulangan Rabies",
"deskripsiSingkat": "<p>Program BAJRA untuk penanggulangan rabies di Desa Darmasaba.</p>",
"deskripsi": "<p>Desa Darmasaba mengembangkan inovasi BAJRA (Bersama Jaga Rabies), sebuah program berbasis komunitas untuk penanggulangan rabies yang mengintegrasikan pelaporan cepat masyarakat, edukasi berkelanjutan dan koordinasi lintas sektor antara kesehatan hewan, manusia, dan pemerintahan desa.</p>",
"imageId": "cmkayd8o90013vn6ye7n8805q"
"imageName": "Gc79mlIlGuoRQuTqskFj--mobile.webp"
},
{
"id": "cmkawnr9k0008vn6ymwv0eqkx",
"name": "Posyandu Pudak Amara Berkompetisi",
"deskripsiSingkat": "<p>Partisipasi Posyandu Pudak Amara dalam lomba prestasi Posyandu tingkat provinsi.</p>",
"deskripsi": "<p>Kader Posyandu Pudak Amara Br. Cabe mendapat pendampingan dari Perbekel Darmasaba, Dinas Kesehatan Kab. Badung, Puskesmas Abiansemal III, dan Pustu Desa Darmasaba dalam ajang lomba kader dan Posyandu berprestasi tingkat Provinsi Bali tahun 2025.</p>",
"imageId": "cmkayi0x90016vn6ykddxqyq3"
"imageName": "OsMY3AYPyGC_CoN1xUjOn-mobile.webp"
},
{
"id": "cmkawnr9k0008vn6ymwv1frly",
"name": "Outbound Kader Posyandu Darmasaba",
"deskripsiSingkat": "<p>Program pembinaan dan pengembangan kapasitas kader Posyandu.</p>",
"deskripsi": "<p>Pemdes Darmasaba melaksanakan kegiatan Outbound Posyandu untuk meningkatkan kapasitas dan wawasan Kader Posyandu se-Desa Darmasaba sebagai bagian dari upaya peningkatan kualitas pelayanan kesehatan dasar di masyarakat.</p>",
"imageId": "cmkaykipf0019vn6yknjno3k1"
"imageName": "M9QlgVKIEfCdY3g4F_tRZ-mobile.webp"
},
{
"id": "cmkdu8ki10004vn4lpbxm2zqo",
"name": "PEMBANGUNAN JAMBAN BAGI MASYARAKAT",
"deskripsiSingkat": "<p>Program pengadaan jamban bagi Masyarakat ini diharapkan menjadi stimulus agar masyarakat peduli terhadap lingkungan sehat sehingga Badung Open Defection Free atau terbebas dari buang air besar di tempat terbuka dapat terwujud.</p>",
"deskripsi": "<p>Desa Darmasaba sebagai desa yang berkomitmen selalu selaras dengan pembangunan Pemerintah Kabupaten Badung pada tahun anggaran 2023 ini turut ambil bagian dalam menyukseskan program Bupati Badung I Nyoman Giri Prasta, S.Sos dalam bidang kesehatan sanitasi masyarakat. Program pengadaan jamban bagi Masyarakat ini diharapkan menjadi stimulus agar masyarakat peduli terhadap lingkungan sehat sehingga Badung Open Defection Free atau terbebas dari buang air besar di tempat terbuka dapat terwujud.</p><p style=\"text-align: justify\">Pemberian bantuan jamban ini dilaksanakan di 11 banjar dengan menyasar 22 keluarga yang memang belum memiliki jamban yang sumber dananya sepenuhnya dari APBDes Darmasaba T. A. 2023. Pembangunan Jamban bagi Masyarakat ini juga menjadi bukti komitmen Pemerintah Desa Darmasaba dalam melaksanakan salah satu visi mewujudkan masyarakat yang sejahtera dan berbudaya untuk menjaga lingkungan yang bersih dan sehat.</p>",
"imageId": "cmkdu8kb20002vn4lihwo4k86"
"imageName": "6DQbAvn0St-xHdPGW3vpY-mobile.webp"
}
]

View File

@@ -4,7 +4,7 @@
"name": "Puskesmas Abiansemal III",
"alamat": "Jl. Ratna, Sibang Kaja, Abiansemal, Badung, Bali 80352",
"jamId": "cmkao2zwx0008vntzmvqdsdzo",
"imageId": "cmkao2zm90007vntzxqkjy5mt",
"imageName": "d6hJgycQawWN3VEcHaqtR-mobile.webp",
"kontakId": "cmkao2zxc0009vntz00kev051"
},
{
@@ -12,7 +12,7 @@
"name": "Puskesmas Pembantu Darmasaba",
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
"jamId": "cmkao2zwx0008vntzmvqdseal",
"imageId": "cmkatoru10000vny38y0wxd6s",
"imageName": "cg78Sb_QzZFlli9s2FPVc-mobile.webp",
"kontakId": "cmkao2zxc0009vntz00kev162"
}
]

View File

@@ -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"
}
]

View File

@@ -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"
}
]

View File

@@ -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"
}
]

View File

@@ -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"
}
]

View File

@@ -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"
}
]

View File

@@ -7,7 +7,7 @@
"tanggal": "2024-01-28T00:00:00.000Z",
"lokasi": "Pura Desa dan Pura Dalem, Desa Adat Tegal, Desa Darmasaba, Badung",
"partisipan": 30,
"imageId": "cmknb59md0000vnmam828iuzt",
"imageName": "YgOX5qAP3O1PHG5XmQXkr-mobile.webp",
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
},
{
@@ -18,7 +18,7 @@
"tanggal": "2023-11-17T00:00:00.000Z",
"lokasi": "Desa Darmasaba, Badung",
"partisipan": 25,
"imageId": "cmknbp3vd0001vnmarjz542o7",
"imageName": "qxqSDHe-akIRi1EkQFUbG-mobile.webp",
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
},
{
@@ -29,7 +29,7 @@
"tanggal": "2022-05-26T00:00:00.000Z",
"lokasi": "Pura Dalem Kangin, Desa Adat Tegal, Desa Darmasaba, Badung",
"partisipan": 28,
"imageId": "cmknbrj4r0002vnmantw9rn0l",
"imageName": "iHTVkQZ1VdkMOXLt5qdAd-mobile.webp",
"kategoriKegiatanId": "cmknan39v000004l8eiql149r"
}
]

View 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"
}
]

Some files were not shown because too many files have changed in this diff Show More