Kredly adalah platform penilaian dan verifikasi kredensial berbasis AI yang menggabungkan adaptive testing, sertifikasi berbasis blockchain, dan analisis CV cerdas untuk memberikan validasi keterampilan dan alat pengembangan karir yang komprehensif.
- Penilaian berbasis IRT: Mengimplementasikan Item Response Theory untuk pengujian keterampilan yang personal dan adaptif
- Tingkat Kesulitan Dinamis: Pertanyaan secara otomatis menyesuaikan berdasarkan performa pengguna
- Evaluasi Komprehensif: Penilaian multi-topik dengan feedback detail, kekuatan, dan rekomendasi
- Sesi yang Dapat Dilanjutkan: Persistensi sesi 24 jam memungkinkan pengguna melanjutkan penilaian yang terputus
- Parsing Cerdas: Ekstrak dan analisis konten CV menggunakan Groq AI
- Penilaian Keterampilan: Buat penilaian khusus berdasarkan konten CV
- Wawasan Karir: Dapatkan rekomendasi personal dan saran perbaikan
- Integrasi Ethereum: Terbitkan sertifikat anti-rusak di blockchain
- Penyimpanan IPFS: Penyimpanan sertifikat terdesentralisasi via Pinata
- Verifikasi Publik: Siapa saja dapat memverifikasi keaslian sertifikat menggunakan ID sertifikat atau hash PDF
- Catatan Permanen: Catatan pencapaian yang permanen dan dapat diverifikasi
- Berbagai Metode Autentikasi: Google OAuth dan Email OTP authentication
- Profil Publik: Halaman profil publik yang dapat disesuaikan dengan kontrol privasi
- Foto Profil: Penyimpanan foto profil berbasis IPFS
- Sistem Username: Username unik untuk URL profil publik
- Pencocokan Berbasis AI: Rekomendasi pekerjaan cerdas berdasarkan keterampilan dan penilaian
- Pelacakan Pekerjaan: Simpan dan kelola peluang pekerjaan
- Log Aktivitas: Lacak semua aktivitas penilaian dan sertifikasi
- Didukung Groq: AI percakapan untuk panduan karir dan dukungan platform
- Context-aware: Memahami profil pengguna dan riwayat penilaian
- Berbasis Kredit: Sistem token untuk fitur premium dan penilaian
- Manajemen Saldo: Lacak dan isi ulang saldo token
- Framework: React 19 dengan Rsbuild
- Routing: TanStack Router dengan auto code-splitting
- Styling: Tailwind CSS 4 + komponen shadcn/ui
- State Management: Zustand
- Animations: Motion (Framer Motion)
- UI Components: Radix UI primitives, Lucide icons
- Build Tool: Rsbuild dengan React Compiler, image compression, dan SVGR
- Language: Go 1.26.1
- Framework: Gin (HTTP router)
- Database: MongoDB
- AI/ML: Groq API untuk fitur berbasis LLM
- Blockchain: Ethereum (go-ethereum)
- Storage: IPFS via Pinata
- Email: Resend API
- Authentication: OAuth2 (Google), Email OTP
- Hot Reload: Air (Go), Rsbuild dev server (React)
- Type Checking: TypeScript 6
- Linting: ESLint dengan React hooks rules
- Formatting: Prettier
- Package Manager: pnpm
kredly/
βββ src/ # Source frontend
β βββ components/ # Komponen React reusable
β βββ pages/ # Komponen halaman
β β βββ client/ # Halaman publik (landing, features, about)
β β βββ dashboard/ # Halaman dashboard terproteksi
β βββ contexts/ # React contexts (auth, dll)
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utilities dan helpers
β βββ routes/ # TanStack Router routes
β βββ services/ # API client services
β βββ stores/ # Zustand stores
βββ server/ # Source backend
β βββ cmd/api/ # Entry point aplikasi
β βββ internal/ # Package internal
β β βββ blockchain/ # Integrasi Ethereum & IPFS
β β βββ config/ # Manajemen konfigurasi
β β βββ database/ # Koneksi MongoDB
β β βββ groq/ # Groq AI client
β β βββ handlers/ # HTTP request handlers
β β βββ middleware/ # HTTP middleware (auth, CORS)
β β βββ models/ # Model data
β β βββ pdf/ # Generasi & parsing PDF
β β βββ service/ # Business logic services
β β βββ store/ # Data access layer
β βββ uploads/ # File yang diupload user
β βββ .air.toml # Konfigurasi Air hot reload
βββ public/ # Aset statis
βββ dist/ # Output production build
- Node.js: v18+
- Go: 1.26.1+
- pnpm: Versi terbaru
- MongoDB: Instance yang berjalan
- Air: Go hot reload tool (
go install github.com/air-verse/air@latest)
Buat server/.env berdasarkan server/.env.example:
# Database
DATABASE_URL=mongodb://localhost:27017/kredly
# Server
PORT=8080
ENVIRONMENT=development
API_URL=http://localhost:8080
FRONTEND_URL=http://localhost:3000
# Authentication
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Email Service
RESEND_API_KEY=your_resend_api_key
# AI/LLM
GROQ_API_KEY=your_groq_api_key
GROQ_BASE_URL=https://api.groq.com/openai/v1
# Job Scraping
APIFY_TOKEN=your_apify_token
# Blockchain
BLOCKCHAIN_RPC_URL=your_ethereum_rpc_url
BLOCKCHAIN_CONTRACT_ADDRESS=your_contract_address
BLOCKCHAIN_PRIVATE_KEY=your_private_key
# IPFS Storage
PINATA_JWT=your_pinata_jwt_token- Clone repository
git clone <repository-url>
cd kredly- Install dependensi frontend
pnpm install- Install dependensi backend
cd server
go mod download# Dari root proyek
pnpm run dev:server
# Atau manual dari direktori server
cd server
airBackend berjalan di http://localhost:8080
# Dari root proyek
pnpm run devFrontend berjalan di http://localhost:3000
pnpm run buildOutput: direktori dist/
pnpm run build:serverOutput: binary server/tmp/main
pnpm run typecheckpnpm run lintpnpm run formatGET /api/auth/sign-in/google- Memulai alur Google OAuthGET /api/auth/callback/google- Callback Google OAuthPOST /api/auth/sign-in/email-otp- Request email OTPPOST /api/auth/verify/email-otp- Verifikasi OTP dan loginGET /api/auth/get-session- Dapatkan sesi pengguna saat ini (terproteksi)POST /api/auth/sign-out- Logout
POST /api/sessions- Buat sesi CAT baruGET /api/sessions/:id- Dapatkan detail sesiGET /api/sessions/:id/next-item- Dapatkan pertanyaan adaptif berikutnyaPOST /api/sessions/:id/answer- Submit jawabanGET /api/sessions/:id/result- Dapatkan hasil penilaian akhirPOST /api/sessions/:id/abandon- Tinggalkan sesi
POST /api/parse-cv- Parse dan analisis CVPOST /api/profile/custom-assessment- Generate penilaian khusus dari CV
POST /api/blockchain/issue- Terbitkan sertifikat di blockchain (terproteksi)GET /api/blockchain/verify- Verifikasi sertifikat berdasarkan IDPOST /api/blockchain/verify-by-hash- Verifikasi sertifikat berdasarkan hash PDFGET /api/certificates/metadata/:sessionId- Dapatkan metadata sertifikat berdasarkan sesiGET /api/certificates/metadata/cert/:certificateId- Dapatkan metadata sertifikat berdasarkan ID sertifikat
GET /api/user/me/token-balance- Dapatkan saldo token penggunaPOST /api/user/me/topup- Isi ulang token (simulasi)PUT /api/user/update-profile- Update profil penggunaPOST /api/user/upload-cv- Upload file CVPOST /api/user/upload-profile-photo- Upload foto profil ke IPFSDELETE /api/user/delete-account- Hapus akun penggunaGET /api/user/public-profile-settings- Dapatkan pengaturan profil publikPUT /api/user/public-profile-settings- Update pengaturan profil publik
GET /api/check-username- Cek ketersediaan username (publik)GET /api/profile- Dapatkan profil sendiri (terproteksi)GET /api/profile/public/:username- Dapatkan profil publik berdasarkan username
POST /api/jobs/fetch- Ambil dan simpan pekerjaanGET /api/jobs- Dapatkan pekerjaan yang disimpan pengguna
GET /api/health- Health checkGET /api/activities- Dapatkan aktivitas pengguna (terproteksi)POST /api/chat- Chat dengan asisten AI
- Item Response Theory (IRT): Menggunakan estimasi theta (kemampuan) dan kesulitan item (b-parameter)
- Pemilihan Pertanyaan Adaptif: Memilih pertanyaan yang sesuai dengan tingkat kemampuan pengguna saat ini
- Standard Error Measurement (SEM): Menghentikan penilaian ketika ambang presisi tercapai
- Min/Max Items: Jumlah pertanyaan minimum dan maksimum yang dapat dikonfigurasi
- Persistensi Sesi: TTL 24 jam dengan sliding window untuk sesi yang dapat dilanjutkan
- Kompatibel Better Auth: Endpoint mengikuti konvensi API Better Auth
- JWT Tokens: Autentikasi berbasis token yang aman
- Auto-refresh: Middleware menangani refresh token secara otomatis
- Berbasis Cookie: Menggunakan HTTP-only cookies untuk penyimpanan token yang aman
- Penerbitan Sertifikat: Generate PDF, hash, simpan di IPFS, catat hash di blockchain
- Verifikasi Ganda: Verifikasi berdasarkan ID sertifikat atau hash file PDF
- Penyimpanan Metadata: MongoDB menyimpan metadata sertifikat untuk lookup cepat
- Pinata IPFS: Penyimpanan terdesentralisasi permanen untuk sertifikat
Aplikasi secara otomatis mendeteksi deployment Vercel dan menyesuaikan base path API.
- Development: Menggunakan base path
/apidengan proxy - Production/Vercel: Dapat dikonfigurasi berdasarkan environment variables
- Fork repository
- Buat feature branch (
git checkout -b feature/fitur-keren) - Commit perubahan Anda (
git commit -m 'feat: tambah fitur keren') - Push ke branch (
git push origin feature/fitur-keren) - Buka Pull Request
Ikuti format conventional commits:
feat:- Fitur barufix:- Perbaikan bugrefactor:- Refaktor kodedocs:- Perubahan dokumentasistyle:- Perubahan gaya kodetest:- Penambahan/perubahan testchore:- Perubahan proses build/tooling
[Tambahkan informasi lisensi]
Untuk masalah, pertanyaan, atau kontribusi, silakan buka issue di GitHub.