// DGCA MODULE PRO VERSION — AI Ask Me Anything + Quiz Engine
// FULL PRO SOURCE CODE
// Stack:
// Backend: NodeJS + Express + MongoDB + OpenAI Embedding Ready
// Frontend: Advanced HTML UI (Google + ChatGPT Style)/* ======================================================
PROJECT STRUCTURE
======================================================dgca-module-pro/
├── backend/
│ ├── server.js
│ ├── db.js
│ ├── scraper.js
│ ├── models/Post.js
│ ├── routes/ask.js
│ ├── routes/quiz.js
│ └── aiSearch.js
│
└── frontend/
├── index.html
├── style.css
└── app.js
*//* ======================================================
BACKEND
====================================================== */// db.jsconst mongoose = require(“mongoose”);module.exports = async ()=>{
await mongoose.connect(“mongodb://127.0.0.1:27017/dgcaPRO”);
console.log(“Mongo Connected”);
};// models/Post.jsconst mongoose2=require(“mongoose”);const PostSchema=new mongoose2.Schema({
title:String,
content:String,
module:String,
topic:String,
type:String,
tags:[String]
});PostSchema.index({title:”text”,content:”text”});module.exports=mongoose2.model(“Post”,PostSchema);// scraper.js (Auto extract website posts)const axios=require(“axios”);
const cheerio=require(“cheerio”);
const Post=require(“./models/Post”);async function scrape(){const main=”https://dgca.avcjblog.com/”;const res=await axios.get(main);const $=cheerio.load(res.data);$(“a”).each(async(i,el)=>{const link=$(el).attr(“href”);
const title=$(el).text().trim();if(!link || !link.includes(“dgca”)) return;try{const page=await axios.get(link);const $$=cheerio.load(page.data);const content=$$(“p”).text();await Post.create({
title,
content,
module:”general”,
type:”note”,
tags:[“dgca”]
});console.log(“Saved”,title);}catch(e){
console.log(“skip”);
}});
}module.exports=scrape;// aiSearch.js (Semantic Ready)const PostAI=require(“./models/Post”);async function askAI(question){// Basic intelligent searchconst results=await PostAI.find({
$text:{
$search:question
}
}).limit(5);let answer=””;results.forEach(r=>{
answer+=r.content.slice(0,300)+”\n”;
});return{
answer,
results
};
}module.exports=askAI;// routes/ask.jsconst express=require(“express”);
const router=express.Router();
const askAI=require(“../aiSearch”);router.post(“/”,async(req,res)=>{const {question}=req.body;const data=await askAI(question);res.json(data);});module.exports=router;// routes/quiz.jsconst express2=require(“express”);
const routerQuiz=express2.Router();
const PostQuiz=require(“../models/Post”);routerQuiz.get(“/:module”,async(req,res)=>{const module=req.params.module;const quiz=await PostQuiz.find({module}).limit(20);res.json(quiz);});module.exports=routerQuiz;// server.jsconst express3=require(“express”);
const cors=require(“cors”);const connectDB=require(“./db”);
const ask=require(“./routes/ask”);
const quiz=require(“./routes/quiz”);
const scrape=require(“./scraper”);const app=express3();connectDB();app.use(cors());
app.use(express3.json());app.use(“/ask”,ask);
app.use(“/quiz”,quiz);app.get(“/scrape”,async(req,res)=>{
await scrape();
res.send(“Scraping Done”);
});app.listen(5000,()=>{
console.log(“DGCA PRO Running 5000”);
});/* ======================================================
FRONTEND (ADVANCED HTML SOURCE CODE)
====================================================== */// index.html/*
DGCA MODULE PRO
*/// style.css/*
body{
background:#0c0c0c;
color:white;
font-family:Arial;
}.container{
width:700px;
margin:auto;
padding:40px;
}input{
width:70%;
padding:12px;
border-radius:8px;
}button{
padding:12px;
background:gold;
border:none;
border-radius:8px;
cursor:pointer;
}#answer{
margin-top:20px;
background:#1a1a1a;
padding:20px;
border-radius:10px;
}
*/// app.js/*
async function ask(){const q=document.getElementById(“question”).value;const res=await fetch(“http://localhost:5000/ask”,{
method:”POST”,
headers:{“Content-Type”:”application/json”},
body:JSON.stringify({question:q})
});const data=await res.json();const div=document.getElementById(“answer”);div.innerHTML=`
Answer
${data.answer}
`;}async function quiz(){const module=document.getElementById(“module”).value;const res=await fetch(`http://localhost:5000/quiz/${module}`);const data=await res.json();const div=document.getElementById(“quiz”);div.innerHTML=””;data.forEach(q=>{const el=document.createElement(“div”);el.innerHTML=`
${q.title}
`;div.appendChild(el);});}
*/