Monday, February 3, 2025

Hari ibintu SADC yashinje u Rwanda tudashobora kwihanganira - Minisitiri Nduhungirehe

 



Minisitiri w’Ububanyi n’Amahanga, Nduhungirehe Olivier, yavuze ko hari ibintu byatangajwe n’Umuryango w’Ubukungu n’Iterambere ry’Ibihugu bya Afurika y’Amajyepfo (SADC) u Rwanda rudashobora kwihanganira aho uwo muryango washinje Ingabo z’u Rwanda kuba ziri muri Repubulika Iharanira Demokarasi ya Congo.

Ibi Minisitiri Nduhungirehe yabigarutseho mu kiganiro yagiranye na IGIHE, aho yagarutse ku byatangajwe na SADC mu nama idasanzwe iherutse guhuza abakuru b’ibihugu biyigize.

Umwanzuro wa kane w’iyo nama yateranye ku wa 31 Mutarama 2025, uragira uti "Inama yakiriye raporo y’ibibazo by’umutekano muke byubuye mu Burasirazuba bwa RDC, yanamenyeshejwe n’amakuru ateye impungenge y’ibitero by’umutwe wa M23 n’Igisirikare cy’u Rwanda (RDF) byagabwe ku ngabo za Leta ya RDC, iza SADC ziri mu butumwa muri RDC (SAMIDRC), ndetse n’abaturage mu bice bitandukanye bya Kivu y’Amajyaruguru."

Minisitiri Nduhungirehe yavuze ko ibyo SADC yashinje Ingabo z’u Rwanda, ari ibintu bidashobora kwihanganirwa, na cyane ko bije bikurikira ibimaze iminsi bitangazwa na Leta ya Afurika y’Epfo, na yo ishinja u Rwanda ibinyoma.

Yagize ati "Uretse ko muri iriya nama ya SADC, hari ibintu bavuze bidashobora kwihanganirwa, by’ibinyoma byambaye ubusa, byo kuvuga ko ngo RDF iri muri Congo, ngo ikaba ari yo yishe abaturage b’abasivile."

Minisitiri Nduhungirehe yavuze ko ibyo binyoma bitakwihanganirwa, bikaba bije byiyongera ku bibazo byari bimaze iminsi hagati ya Afurika y’Epfo n’u Rwanda, avuga ko byatewe na bamwe mu bayobozi bo muri icyo gihugu.

Ati "Mbere na mbere nyirabayazana w’iki kibazo, ni bariya bayobozi ba Afurika y’Epfo cyane cyane Minisitiri w’Ingabo. Perezida Ramaphosa na Perezida Kagame bagiranye ibiganiro bibiri mu cyumweru gishize, ku wa Mbere no ku wa Gatatu, ibyo biganiro byagenze neza, mu kiganiro cya mbere banaganiriye ku kuntu iyi ntambara yarangira, nta gushinjanya kurimo, baganiriye neza mu mwuka mwiza, bumvikana ko hariya hakeneye agahenge, icyo ni cyo cya mbere bemeranyije,"

Yongeyeho ko "Icya kabiri bemeranya ko hakenewe ibiganiro hagati ya Guverinoma ya Congo na M23, kandi ko na Perezida Ramaphosa agiye gukora ibishoboka akabwira Tshisekedi ko agomba kuganira na M23, icyo ni ikiganiro cya mbere."

Minisitiri w’Ububanyi n’Amahanga yavuze ko ikiganiro cya kabiri abo Bakuru b’Ibihugu bagiranye ku wa Gatatu, baganiriye ku mirwano yari iherutse kuba, aho Perezida Ramaphosa yanabwiye Perezida Kagame ko abasirikare ba Afurika y’Epfo baherutse gupfa bishwe n’abasirikare ba FARDC, ati "Ni Perezida Ramaphosa ubwe wabimubwiye."

Yongeyeho ati "Icya kabiri bavuganye ni uko Perezida Ramaphosa, yasabye Perezida Kagame ko yamusabira M23 ko ingabo ze, ingabo ziri hariya muri SAMIDRC, zabona amazi, amashanyarazi n’ibyo kurya, ibyo bintu biraba. Ibyo rero ni ibiganiro by’abakuru b’ibihugu, bitagomba kujya hanze."

Minisitiri Nduhungirehe yavuze ko bukeye, nyuma y’ibyo biganiro babonye ikiganiro Minisitiri w’Ingabo wa Afurika y’Epfo, ari kumwe na Minisitiri w’Ububanyi n’Amahanga, bagiranye n’abanyamakuru, "aho Minisitiri w’Ingabo yavuze ko Perezida Ramaphosa yahaye gasopo Perezida Kagame, kandi batigeze babiganiraho."

Yavuze ko ibyo byanakurikiwe n’ubutumwa bwanyujijwe ku rubuga rwa X rwa Perezida Ramaphosa, aho yise RDF inyeshyamba, avuga ko irwanya abashinzwe kugarura amahoro ba SAMIDRC, ngo ni byo byatumye Minisitiri Nduhungirehe ahita asubiza ku nkuru yavugaga ibyo abo baminisitiri bavuze by’ibinyoma, nyuma na Perezida Kagame yasubije ku byanditswe na Perezida Ramaphosa, wise RDF inyeshyamba.

Icyo gihe Perezida Kagame yaragize ati “RDF ni igisirikare ntabwo ari inyeshyamba. SAMIDRC ntabwo ari ingabo ziri mu butumwa bw’amahoro ndetse nta mwanya zifite muri ibi bintu.”

Minisitiri Nduhungirehe yavuze ko ibinyoma batangaje birimo kuba bavuga ko ingabo zabo zajyanywe no kugarura amahoro, kandi mu by’ukuri atari ko bimeze ahubwo zaragiye kurwana.

Ati "Nanjye narasubije ku rubuga rwa X, mvuga ko biriya bintu [Minisitiri w’Ingabo wa Afurika y’Epfo] yavuze atari byo, ko nta gasopo yabaye, ko abasirikare ba SAMIDRC atari abashinzwe kugarura amahoro, ahubwo ko ari abasirikare baje kurwanira Tshisekedi n’ingabo ze z’abajenosideri ba FDLR, z’abacanshuro na Wazalendo n’abandi."

Minisitiri Nduhungirehe agaruka ku buryo umwuka umeze ubu hagati y’u Rwanda na Afurika y’Epfo, aho yavuze ko nyuma y’ikiganiro yagiranye n’umunyamakuru wa SABC News, ikiganiro cyanagiyemo Minisitiri w’Ububanyi n’Amahanga wa Afurika y’Epfo, Ronald Lamola, uwo muyobozi yahise amuhamagara, amusaba ko bakomeza inzira y’ibiganiro bya dipolomasi mu kureba uko bakemura ikibazo bitagombye kujya hanze nk’uko byagenze.

Ati "Nanjye naramwemereye rwose nti ’nta kibazo tugomba gukomeza iby’iyo nzira’, rero n’inzego zitandukanye ubu ziravugana, ubu ngubu tuzareba. Mwabonye iriya nama y’Abakuru b’Ibihugu bya EAC yabaye ku wa Gatatu, yavuze ko hagomba kubaho inama ihuriweho hagati ya EAC na SADC kugira ngo ducoce icyo kibazo turebe ukuntu twagikemura, kandi nabonye na SADC na yo yaremeye iyo nama ihuriweho."

Hagati aho, Guverinoma y’u Rwanda, iherutse gutangaza ko Ihuriro ry’Ingabo za Repubulika Iharanira Demokarasi ya Congo n’imitwe irimo FDLR, Wazalendo, Ingabo z’u Burundi, Iza SADC n’Abacanshuro b’Abanyaburayi ryari rifite gahunda yo kurutera.

U Rwanda rwagaragaje ko kuba Ingabo z’Umuryango w’Ubukungu n’Iterambere ry’Ibihugu bya Afurika y’Amajyepfo (SADC) ziri muri RDC zivuga ko zatumiwe na Guverinoma ya RDC, nta shingiro bifite kuko ziri kurwanya abaturage b’icyo gihugu ndetse no gushoza intambara ku Rwanda.

Rivuga ko “Amakuru aheruka yavuye i Goma yamaze gutahurwa n’ibimenyetso bifatika byerekena imyiteguro yo kugaba ibitero yateguriwe hamwe n’ingabo z’amahanga ziri kurwanira mu Burasirazuba bwa RDC, zirimo FDLR, bigaragaza ko intego y’imirwano atari ugutsinda gusa M23 ahubwo yari ugutera u Rwanda.”

U Rwanda rwagaragaje ko RDF irinda ubusugire bw’Igihugu n’imipaka y’u Rwanda ibitero bishobora kurugabwaho hagamijwe kurinda abasivili, bityo ko zidashobora kugaba ibitero ku basivili b’ikindi gihugu.

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