Friday, January 17, 2025

Perezida wa Repubulika y' u Rwanda Paul Kagame yashimangiye ko aho kugira ngo u Rwanda rusubire muri Jenoside rwahanagurwa ku ikarita

Yanditswe na NZAYISENGA Adrien Kuya 16 January 2025 saa 09:56

Perezida Paul Kagame yashimangiye ko nta muntu ushobora gusubiza u Rwanda mu mateka ya Jenoside yakorewe Abatutsi mu 1994, kabone n’iyo byaba bisaba ko u Rwanda ruhanagurwa ku ikarita y’Isi. Ni ingingo yagarutseho kuri uyu wa Kane tariki 16 Mutarama 2025, ubwo yakiraga ku meza abadipolomate bahagarariye ibihugu bitandukanye bakorera mu Rwanda. Mu ijambo yabagejejeho, Perezida Kagame yagarutse ku ngingo zitandukanye zireba ubuzima bw’igihugu, ikibazo cy’umutekano muke mu Burasirazuba bwa Repubulika Iharanira Demokarasi ya Congo n’ubutumwa Ingabo z’u Rwanda zirimo muri Centrafrika na Mozambique. Yagaragaje ko ikibazo kiri mu Burasirazuba bwa Congo cyo kuvangura abavuga Ikinyarwanda gifite imizi mu mateka y’ubukoloni yaranze Afurika kandi agaragaza yuko icyo kibazo cyo kimwe nikibazo cy'interahamwe zashyigikiwe na leta ya Congo ko amahanga akivuga agica hejuru gusa byo kwiyerurutsa. Ati “Muzi impamvu aba bantu bavuga Ikinyarwanda bari mu Burasirazuba bwa Congo, iki kibazo kiri no muri Uganda, mu Majyepfo ashyira uburengerazuba, hari akarere kose gafite abaturage benshi bavuga Ikinyarwanda, iyo mvuga abavuga Ikinyarwanda, ntabwo ari ukukivuga gusa, aba ni n’abantu bafite abo bafitanye isano. Hari abantu bari hano mu gihugu aho mvugira aha bafite ba nyirarume, ba sekuru baba hakurya y’umupaka, abandi baba hano mu Rwanda."


Yakomeje ati "Urugero muri Uganda ntabwo higeze habaho ikibazo cy’ako karere, ntabwo byigeze biteza ikibazo hagati ya Uganda n’u Rwanda, oya, bafatwa nk’Abanya-Uganda kandi natwe turabyemera, ntacyo tuburana, kuki atari ko bimeze muri Congo?” Umukuru w’Igihugu yasabye abashinja Ingabo z’u Rwanda kuba mu Burasirazuba bwa Congo, kwibaza impamvu zikwiye kuba zihari. Ati “Niba utekereza ko u Rwanda ruri mu Burasirazuba bwa Congo guteza ibibazo, ese ushobora kwigora ugafata umwanya ukibaza impamvu u Rwanda rushobora kujya kurwana mu Burasirazuba bwa Congo? Kubera iki? Ukwiriye gusubiza icyo kibazo, kuko wenda ahari kizakugeza ku bintu ukwiriye gukemura aho kubyihunza.”

N’iyo byaba bisaba ko u Rwanda ruhanagurwa ku ikarita Perezida Kagame yashimangiye ko amateka ashaririye ya Jenoside u Rwanda rwanyuzemo rudashobora kuyasubiramo ukundi. Ati “Gukomeza gusohora amatangazo no gutera ubwoba, reka mbabwire ibyo bintu twabinyuzemo. Twishyuye ikiguzi cyo hejuru gishoboka mu buzima bwacu, iyi Jenoside.” Yakomeje avuga ko nta gishobora gusubiza u Rwanda muri Jenoside, kabone n’iyo byaba bisaba ko ruhanagurwa ku ikarita kuko kuri we ndetse no Kubaturage bu Rwanda ari ikibazo cy'urupfu n'ubuzima. Ati “Dushobora gushyirwa mu bibazo no kubabazwa mu buryo bwose bushoboka, ariko ntabwo tuzigera dusubira kongera kwishyura icyo kiguzi (Jenoside yakorewe Abatutsi), twishyuye mu myaka 30 ishize, ntitwitaye ku mbaraga uwo muntu yaba afite, wenda bizagera aho uwo muntu atsimbarara kuri ibyo, wenda ubwo buzaba ari uburyo bwo guhanagura u Rwanda ku ikarita.” Jenoside yakorewe Abatutsi mu 1994 ni amateka ashaririye u Rwanda rwanyuzemo, ariko afite imizi mu rwango rwabibwe kuva mu gihe cy’ubukoloni. Yashyizweho akadomo muri Nyakanga mu 1994 n’Ingabo zahoze ari iza RPA, nyuma yo guhitana ubuzima bw’Abatutsi barenga miliyoni. Ukeneye Kwamamaza Duhamagare Tugufashe kuri +250784296338 Cyangwa utwandikire kuri: nayisengadrianos@gmail.com, nayisengadrianos@yahoo.com.

0 Comments:

Post a Comment

Comment here

Subscribe to Post Comments [Atom]

<< Home

.

Nzayisenga Adrien

Rwanda • Africa • History • Business • Technology • Knowledge

Page Views
0
Visitors
0
AdSense Revenue
Check AdSense

Support Nzayisenga Adrien

Ushobora gushyigikira ibikorwa byacu by'ubushakashatsi, ubumenyi, amateka n'itangazamakuru.

Support / Pay

Uko system ikora

Abasomyi basura blog → Google igatanga ads → abantu bareba cyangwa bagakanda ads mu buryo busanzwe → AdSense ikabara amafaranga → Google ikishyura konti yawe hakurikijwe payment settings za AdSense.

Ntukande ku matangazo yawe kandi ntusabe abandi kuyakandaho. Clicks zigomba kuba genuine.

. Rwanda Nziza Ngobyi Iduhetse | ADFID TV | Nzayisenga Adrien ADFID Africa | Digital Library & AI Content Creator

ADFID Africa

African knowledge, digital publishing and AI-powered content creation in one platform.

🤖 AI Content Creator

Create articles, YouTube scripts, Shorts, Facebook posts and SEO content.

📚 Digital Library

Store and manage your African books, research and educational resources.

📺 ADFID TV

Transform written articles into video-ready scripts.

💰 Monetization

Prepare your platform for advertising, subscriptions and reader support.

🤖 ADFID TV AI Content Creator

Create multiple content formats from one article.

📚 ADFID Africa Digital Library

📤 Upload E-Book

📊 ADFID Dashboard

Books

0

Articles Created

0

AI Generations

0

Platform Status

ONLINE

System Information

This running version stores demo data in your browser using localStorage.

For a production platform, connect this interface to a real backend, database, authentication system and AI API.

❤️ Support ADFID Africa

Support Knowledge & African Digital Content

Your support can help develop educational materials, African history resources, digital books and media content.


Email: nayisengadrianos@gmail.com

Mobile: +250 784 296 338

require("dotenv").config(); const express = require("express"); const multer = require("multer"); const path = require("path"); const crypto = require("crypto"); const { createClient } = require("@supabase/supabase-js"); const app = express(); const PORT = process.env.PORT || 3000; const SUPABASE_URL = process.env.SUPABASE_URL; const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_KEY; const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD; if (!SUPABASE_URL || !SUPABASE_SERVICE_KEY || !ADMIN_PASSWORD) { console.error("Missing required environment variables."); process.exit(1); } const supabase = createClient( SUPABASE_URL, SUPABASE_SERVICE_KEY, { auth: { autoRefreshToken: false, persistSession: false } } ); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(express.static(path.join(__dirname, "public"))); const upload = multer({ storage: multer.memoryStorage(), limits: { fileSize: 100 * 1024 * 1024 }, fileFilter: (req, file, cb) => { const extension = path.extname(file.originalname).toLowerCase(); if ( extension !== ".pdf" && file.mimetype !== "application/pdf" ) { return cb(new Error("Only PDF files are allowed.")); } cb(null, true); } }); function checkAdmin(req, res, next) { const password = req.headers["x-admin-password"]; if (!password || password !== ADMIN_PASSWORD) { return res.status(401).json({ error: "Unauthorized" }); } next(); } function cleanFileName(name) { return name .replace(/[^a-zA-Z0-9._-]/g, "-") .replace(/-+/g, "-") .toLowerCase(); } /* GET BOOKS */ app.get("/api/books", async (req, res) => { try { const search = (req.query.search || "").trim(); let query = supabase .from("books") .select("*") .order("created_at", { ascending: false }); if (search) { query = query.or( `title.ilike.%${search}%,author.ilike.%${search}%,category.ilike.%${search}%` ); } const { data, error } = await query; if (error) { throw error; } res.json(data || []); } catch (error) { console.error(error); res.status(500).json({ error: "Unable to load books." }); } }); /* UPLOAD BOOK */ app.post( "/api/books", checkAdmin, upload.single("pdf"), async (req, res) => { try { if (!req.file) { return res.status(400).json({ error: "Please select a PDF file." }); } const title = (req.body.title || "").trim(); const author = (req.body.author || "").trim(); const description = (req.body.description || "").trim(); const category = (req.body.category || "General").trim(); if (!title || !author) { return res.status(400).json({ error: "Title and author are required." }); } const unique = crypto.randomBytes(8).toString("hex"); const filename = `${Date.now()}-${unique}-${cleanFileName(req.file.originalname)}`; const storagePath = `pdfs/${filename}`; /* Upload PDF to Supabase Storage */ const { error: uploadError } = await supabase.storage .from("books") .upload( storagePath, req.file.buffer, { contentType: "application/pdf", upsert: false } ); if (uploadError) { throw uploadError; } /* Get public PDF URL */ const { data: publicData } = supabase.storage .from("books") .getPublicUrl(storagePath); const pdfUrl = publicData.publicUrl; /* Save book information */ const { data, error } = await supabase .from("books") .insert({ title, author, description, category, pdf_path: storagePath, pdf_url: pdfUrl, downloads: 0 }) .select() .single(); if (error) { throw error; } res.json({ success: true, message: "Book uploaded successfully.", book: data }); } catch (error) { console.error(error); res.status(500).json({ error: error.message || "Book upload failed." }); } } ); /* DELETE BOOK */ app.delete( "/api/books/:id", checkAdmin, async (req, res) => { try { const id = req.params.id; const { data: book, error: findError } = await supabase .from("books") .select("*") .eq("id", id) .single(); if (findError) { throw findError; } /* Delete PDF from storage */ if (book.pdf_path) { await supabase.storage .from("books") .remove([ book.pdf_path ]); } /* Delete database record */ const { error: deleteError } = await supabase .from("books") .delete() .eq("id", id); if (deleteError) { throw deleteError; } res.json({ success: true }); } catch (error) { console.error(error); res.status(500).json({ error: "Unable to delete book." }); } } ); /* DOWNLOAD BOOK Increments download counter. */ app.get( "/api/books/:id/download", async (req, res) => { try { const id = req.params.id; const { data: book, error } = await supabase .from("books") .select("*") .eq("id", id) .single(); if (error || !book) { return res.status(404).send( "Book not found." ); } /* Increase download count */ await supabase .from("books") .update({ downloads: Number(book.downloads || 0) + 1 }) .eq("id", id); /* Redirect to PDF */ res.redirect(book.pdf_url); } catch (error) { console.error(error); res.status(500).send( "Download failed." ); } } ); /* HEALTH CHECK */ app.get("/api/health", (req, res) => { res.json({ status: "running", application: "ADFID Africa Digital Library" }); }); /* ERROR HANDLER */ app.use((error, req, res, next) => { console.error(error); res.status(400).json({ error: error.message || "Something went wrong." }); }); app.listen(PORT, () => { console.log(""); console.log( "==========================================" ); console.log( " ADFID Africa Digital Library" ); console.log( " PDF Library Server" ); console.log( ` Running: http://localhost:${PORT}` ); console.log( ` Admin: http://localhost:${PORT}/admin.html` ); console.log( "==========================================" ); }); ADFID Library Administration

ADFID AFRICA DIGITAL LIBRARY

Administrator Panel

Administrator Login