Skip to main content
Glama
index.js3.03 kB
/** * QTI Service * * This service provides an API for interacting with the 1EdTech Extended QTI Implementation, * which is used to store generated content in a standardized format. */ const express = require('express'); const cors = require('cors'); const { Pool } = require('pg'); const dotenv = require('dotenv'); // Load environment variables dotenv.config(); // Initialize Express app const app = express(); const port = process.env.PORT || 4000; // Database connection const pool = new Pool({ host: process.env.DB_HOST, port: process.env.DB_PORT, database: process.env.DB_NAME, user: process.env.DB_USER, password: process.env.DB_PASSWORD }); // Middleware app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Routes app.get('/', (req, res) => { res.json({ message: 'QTI Service API', version: '0.1.0' }); }); // QTI Content Routes app.post('/api/qti/question', async (req, res) => { try { const { content, tags } = req.body; // TODO: Implement actual QTI storage logic console.log('Storing question in QTI format:', content.substring(0, 50) + '...'); console.log('With tags:', tags); // Placeholder implementation const id = `question_${Date.now()}`; res.status(201).json({ success: true, data: { id: id, message: 'Question stored in QTI format' } }); } catch (error) { console.error('Error storing question:', error); res.status(500).json({ success: false, error: error.message }); } }); app.post('/api/qti/article', async (req, res) => { try { const { content, tags } = req.body; // TODO: Implement actual QTI storage logic console.log('Storing article in QTI format:', content.substring(0, 50) + '...'); console.log('With tags:', tags); // Placeholder implementation const id = `article_${Date.now()}`; res.status(201).json({ success: true, data: { id: id, message: 'Article stored in QTI format' } }); } catch (error) { console.error('Error storing article:', error); res.status(500).json({ success: false, error: error.message }); } }); app.post('/api/qti/course', async (req, res) => { try { const { title, subject, grade, lessons } = req.body; // TODO: Implement actual QTI course creation logic console.log('Creating course in QTI format:', title); console.log('With lessons:', lessons.length); // Placeholder implementation const id = `course_${Date.now()}`; res.status(201).json({ success: true, data: { id: id, message: 'Course created in QTI format' } }); } catch (error) { console.error('Error creating course:', error); res.status(500).json({ success: false, error: error.message }); } }); // Start the server app.listen(port, () => { console.log(`QTI Service running on port ${port}`); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Birdsmith/Gauntlet-Incept-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server