Skip to content

bgdar/rant

Repository files navigation

banner rant


Tech Stack

NestJS WebSocket RabbitMQ Socket.IO Fastify EJS TailwindCSS Alpine.js MongoDB pnpm

rant bot to detect abusive words on several social media that use bots

Tech Info :

  • RabbitMQ : Messaging yang cocok untuk komunikasi ke api model server dan aplikasi Bot lain

  • argon : algoritma hashing password

  • class-validator : validasi pada DTO

  • @fastify/session : untuk session , jadi project ini mengguankan session tampa perlu redis , kecuali nantik jika sudah gedek

    di sini tidak menggunkana @secure-session karena tidak cocok dengan flash message

  • @fastify/cookie : karena ada session pastinya ada cookies

    @fastify/flash : tidak stabil di fastify

    Walaupun mengguankan flash , tapi gunakan json return untuk informasi yang lebih interaktif , flash message cukup saat pertama di kirim aja

  • Tailwindcss : menggunakan Tailwincss CLI yang auto build running server + client ( tailwindcss)

    # running tailwindcss untuk generate code
    pnpm run client
  • fontawesome : font di project ini cek di web aslinya : font icon

  • session + cokiess +guard : 2agar keamana di setiap view nantik

Coomin Soon
  • Redis : saat aplikais besar nantik dan karena mengguankan Session maka sesi login pengguna akan di simpan dan di tangani oleh Redis
  • Speech-to-Text (STT) : ini untuk kasus **Audio** jadi kita ubah ke text dahulu baru di handle oleh model nantinya

    ini sulit dan lama , butuh trining model terpisah agar akurasi untuk bahasa daerah cocok

Bot

User

ada 2 jenis katori user User user biasa yang masuk ke grub atau berinteraksi dengan bot app user akan punya akun yang terkoneksi ke bot

  • role ( daftar keadaan suatu user ) :
  1. Normal (Normal)-> Toxic 0% - 20%: Pengguna berkomunikasi secara wajar, sopan, dan kooperatif.
  2. Suspicious (Mencurigakan) -> Toxic 21% - 40%: Mulai menggunakan sarkasme atau sindiran tipis yang berpotensi memancing emosi pengguna lain.
  3. Dangerous (Berbahaya) -> Toxic 41% - 60%: Frekuensi penggunaan kata-kata kasar atau provokasi mulai meningkat dan mengganggu kenyamanan.
  4. Extreme (Sangat Beracun) -> Toxic 61% - 100%: Pelanggaran berat seperti flaming, penghinaan, atau harassment (pelecehan) secara terang-terangan.

Supervisor pendamping atau admin yang mengelola grub

Karena menggunakan session maka pilih Id supervisor dengan id user itu 'BERBEDA'

Forumis

Forumis: Sebutan resmi untuk orang yang aktif berpartisipasi atau menjadi bagian dari suatu forum.

  • forums hanya bisa di buat oleh supervisor maka harus login ulang jika user login ,

    idenya saat login cek apakah sudah ada akun supervisor yang sama , jika ada maka supervisor juga login

  • role (status supervisor) :

    untuk bebera role coming soon

  1. Trainee (Siswa / Magang): Pengawas pemula yang hanya bisa memantau dan melaporkan pelanggaran dasar tanpa hak eksekusi langsung.
  2. Teacher (Guru / Moderator) : Pengawas operasional yang berhak menegur, memberi peringatan, dan meredam situasi konflik ringan.
  3. Manager (Manajer / Pengawas) : Pengawas senior yang memiliki wewenang untuk membekukan akun sementara dan mengedit konten yang melanggar.
  4. Director (Direktur / Kepala): Pengawas tingkat tinggi yang mengambil keputusan strategis dan menangani kasus pelanggaran berat.
  5. CEO (Bos Besar / Pemilik): Pengawas tertinggi dengan kendali penuh atas sistem, kebijakan, serta otoritas mutlak untuk blokir permanen.
Chat , Group , Forums
  • Forums: Tempat atau wadah (kamar) diskusi besar yang berisi informasi grup, status akses, dan statistik obrolan komunitas.

  • Group: Koleksi data pesan/chat yang dikirim oleh anggota di dalam suatu Forums tertentu (dilengkapi fitur pelacakan baca banyak orang).

  • Chat: Koleksi data pesan/chat personal (1-on-1) antar-user yang terisolasi di dalam ruangan unik (roomId) tanpa terikat dengan forum mana pun.

Sosmed

handle Sosmed

  • sosmed.controller : handle untuk Api sosmed di sini , baik login , berpindah halaman dan lainya

Dataset

Kemampuan monggoDB

  • NoSQL dirancang untuk menangani operasi tulis (write) skala besar dengan latensi sangat rendah jadi cocok utnuk chating
  • MongoDB menggunakan memori internal komputer (RAM caching) secara optimal untuk mempercepat proses penyimpanan pesan baru dan penarikan riwayat chat lama. Hal ini membuat pengalaman pengguna saat melakukan scrolling riwayat chat terasa sangat instan
    Kekurangan MongoDB
  • database ini kurang optimal jika digunakan untuk mengelola data relasional yang sangat kompleks dengan banyak operasi JOIN, seperti sistem transaksi keuangan atau manajemen inventaris yang rumit.

Dataset Column info

Column Arti Penjelasan
text Teks komentar Isi kalimat atau komentar yang dianalisis oleh model NLP
toxic Beracun / Toxic Menandakan komentar mengandung unsur negatif, kasar, ofensif, atau tidak sopan
severe_toxic Sangat toxic Toxic tingkat berat, biasanya lebih agresif, ekstrem, atau sangat kasar
obscene Kata cabul / vulgar Mengandung kata-kata kotor, porno, atau vulgar
threat Ancaman Mengandung ancaman kepada seseorang
insult Penghinaan Menghina, merendahkan, atau menyerang seseorang
identity_hate Kebencian identitas Ujaran kebencian terhadap identitas tertentu seperti ras, agama, suku, gender, dll

Model Api

ada di branch :Model server

  • di sini model AI untuk prediksi di jalakna dan juga handle response untuk menghasilkan response text untuk Bots gunakan
  • di sini iniasialisais pertama RabbitMQ untuk membuat daftar queue - queue yang di perlukna untuk komunikasi aplikasi

RabbitMQ

RabbitMQ file ada fi module rant

untuk masuk ke web RabbitMQ

  • Default port and port now : 5672
  • masuk ke url : http://localhost:15672
  • default password : guest , username : guest

queue :

  • queue-telegram : untuk mengirim data metah ke queue dan masuk ke Model Server Api

  • queue-telegram-response : hasil yang di kembalikan oleh Model Server Api dengan response text

  • queue-discord

  • queue-discord-response

  • queue-dashboard

  • queue-dashboard-response

  • queue-user : berisi data user yang akan di gunakan di setiap apliakasi , ada ID untuk memastikan user login ke setiap aplikasi

Format data untuk Receiver && Production

User accest

data user

{
    username : "bisa saja berubah di setiap aplikasi sosmed ( cari tahu cara menghadle nya)",
    discord_id : "121212121",
    telegram_id : "1212121212",
    akun : "user || supervisor"
    role : "user role atau supervisor role"
}
Model Api accest

data ( payload ) yang masuk ke server yang menjalakan model dan response nya

  • data di queue dengan nama queue-<media social> : data yang media sosial kirim ke rabbitmq
  • field katagori di gunakan untuk spesifikasi response chat , tergantung bagaimaan response chat di tulis ulang contoh: grub,chat,
 {
     "chat_id": ,
     "katagori" : ""
    "text": ,
    "plafrom": "telegra, || discord || dashboard"
}
  • data di queue dengan nama queue-<media social>-response : data yang di kriim dari rabbitmq
  • field katagori di gunakan untuk spesifikasi response chat , tergantung bagaimaan response chat di tulis ulang contoh: grub,chat,
 {
     "chat_id": ,
    "response": string,
     "katagori" : ""
    is_toxic  : boolean
    "plafrom": string
}

ini data memang harus selau di kirim sih untuk di cek di server model nya

Docker

docker compose :

  • mongodb : database utama
  • monggodb-express : antarmuka adminitratif berbasis web

    akses di web : localhost = http://localhost:8081/db/rant/

# jalanakn di directory docker
cd docker

# jalanak compise file
docker compose run -d
# test ping container
docker exec -it mongo-express-rant ping mongodb-rant

# login with password
docker exec -it mongodb-rant mongosh -u dar -p dar-rant --authenticationDatabase admin

Database ( monggoDB )

Database name : rant Biarkan WEb app ini menjadi pusat uatamanay , jadi semua data aakn di simpan di database 1 ini ( rant )

file dengan extensi nama_file.db.service.ts : adalah file model untuk database nya

  1. Data Dummmy untuk semua bot
  2. Table database rant menentukan spesifikasi bahasa untuk rant nya ( indo , aceh , english) itu berdasarkan table nya
Chat dan group
  • Meskipun jutaan pesan dari ribuan pengguna berada di dalam satu collection yang sama (chats), database tidak akan pernah tertukar atau salah menampilkan pesan.
  • roomId ini bertindak seperti "Nomor ID Kamar". Ketika User A mengobrol dengan User B, server akan men-generate ID kamar yang unik dan konsisten (misalnya: p2p_660a_660b).
  • Semua pesan yang mereka kirim selamanya akan dicap dengan roomId tersebut
  • Saat query dijalankan, MongoDB tidak perlu membaca seluruh isi database dari atas ke bawah. MongoDB akan langsung melompat ke bagian daftar isi roomId yang dicari, mengambil pesannya, dan mengurutkannya berdasarkan waktu (createdAt). Proses ini terjadi dalam hitungan milidetik!
hunggiFace

dataset juga di simpan di sini

Response

Json response :

  • message : informasi yang di kirim dari server baik atau buruk
  • status : status message :
    1. success : message berhasil
    2. info :
    3. warning :
    4. error :

App Color

  • #ff0000 ( main color )
  • #000000
  • #ffffff
  • #999999 ( medium gray)

Folder info

  • forums.module : modular untuk forums di web ini yang mempunyai chat , grub
  • `rant

FIle info

nama.db.service : untuk Model atau komunikasi ke database

Poblem

  1. Untuk menjalanakn , yang di hosting tidak hanya web tapi juga semua Bot , berdasarkan kataogi sosmed

License

Module di sini gak rapi sesuia konsep nest , tapi ide sendiri wkwkw

Nest is MIT licensed.

About

Dashboard Aplication pendetaksi kata kata kasar , untuk beberapa media social dalam kasus ini untuk bot

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages