Pilih kelas & topik, kumpulkan bintang sebanyak-banyaknya!
Kelas 1 โข 8 soal โข 3 nyawa โค๏ธ
File api/gemini.js sudah ada di project ini. Cukup set env GEMINI_KEY di Vercel โ Settings โ Environment Variables, lalu centang "Pakai proxy" di atas. Kuncimu jadi aman di server:
export default async function handler(req, res) {
const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=' + process.env.GEMINI_KEY;
const r = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(req.body),
});
res.status(r.status).json(await r.json());
}
create table if not exists players( id uuid default gen_random_uuid() primary key, nama text unique not null, avatar text default '๐ฆ', xp int default 0, bintang int default 0, created_at timestamptz default now() ); create table if not exists scores( id bigint generated always as identity primary key, player_name text not null, topik text not null, grade int default 1, score int default 0, stars int default 0, created_at timestamptz default now() ); create table if not exists question_bank( id bigint generated always as identity primary key, topik text not null, grade int default 1, q jsonb not null, created_at timestamptz default now() ); alter table players enable row level security; alter table scores enable row level security; alter table question_bank enable row level security; create policy pub_read_players on players for select using(true); create policy pub_ins_players on players for insert with check(true); create policy pub_upd_players on players for update using(true); create policy pub_read_scores on scores for select using(true); create policy pub_ins_scores on scores for insert with check(true); create policy pub_read_bank on question_bank for select using(true); create policy pub_ins_bank on question_bank for insert with check(true);
Menyiapkan misi...