twitterCompetitorMonitoringapi.ts3 matches
7const url = new URL(req.url);
89// API endpoint to get tweet data as JSON
10if (url.pathname === "/api/data") {
11const dailyCounts = await getTweetCountsByDay();
12const totalCounts = await getTotalTweetCounts();
92async function renderCharts() {
93try {
94const response = await fetch('/api/data');
95const data = await response.json();
96console.log({ data });
twitterCompetitorMonitoringREADME.md2 matches
92. **Database** (`db.ts`): Uses SQLite to store tweet data and provides functions to query the data.
10113. **Web Interface** (`api.ts`): Serves an HTML page with charts showing tweet counts per competitor per day.
1213## Competitors Tracked
25## How to Use
26271. Set up the `TWITTER_BEARER_TOKEN` environment variable with your Twitter API bearer token.
28292. The cron job will automatically run every hour to collect data.
RoshanMustaqbilindex.ts12 matches
3import { cors } from "https://esm.sh/hono@3.11.7/middleware";
4import { readFile, serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
5import { getDashboardData, getQuizSubmissions } from "./api";
6import { ApiResponse, DashboardData, QuizSubmission } from "./types";
78const app = new Hono();
16app.use("*", cors());
1718// API Routes
19app.get("/api/dashboard", async (c) => {
20try {
21// Get auth token from header
24
25if (!token) {
26return c.json<ApiResponse<null>>({
27success: false,
28error: "Authentication required"
33
34if (!dashboardData) {
35return c.json<ApiResponse<null>>({
36success: false,
37error: "Invalid authentication or teacher not found"
39}
40
41return c.json<ApiResponse<DashboardData>>({
42success: true,
43data: dashboardData
45} catch (error) {
46console.error("Dashboard error:", error);
47return c.json<ApiResponse<null>>({
48success: false,
49error: "Server error fetching dashboard data"
52});
5354app.get("/api/quiz/:quizId/submissions", async (c) => {
55try {
56const quizId = c.req.param("quizId");
59
60if (!token) {
61return c.json<ApiResponse<null>>({
62success: false,
63error: "Authentication required"
67const submissions = await getQuizSubmissions(quizId);
68
69return c.json<ApiResponse<QuizSubmission[]>>({
70success: true,
71data: submissions
73} catch (error) {
74console.error("Submissions error:", error);
75return c.json<ApiResponse<null>>({
76success: false,
77error: "Server error fetching submissions"
22try {
23const token = localStorage.getItem('teacherToken') || '';
24const response = await fetch(`/api/quiz/${quiz.quiz_id}/submissions`, {
25headers: {
26'Authorization': `Bearer ${token}`
RoshanMustaqbilLoginForm.tsx1 match
17
18// For demo purposes, we're using a mock token
19// In a real app, you would authenticate with your API
20setTimeout(() => {
21// Mock successful login for teacher@example.com/password
RoshanMustaqbilindex.tsx1 match
28
29try {
30const response = await fetch('/api/dashboard', {
31headers: {
32'Authorization': `Bearer ${token}`
RoshanMustaqbilapi.ts6 matches
1// Mock API functions for teacher dashboard
2// In real implementation, these would connect to your actual backend API
34import { User, Quiz, QuizSubmission, QuizWithStats, SubmissionStats, DashboardData } from './types';
56// Mock data - replace with actual API calls
7const MOCK_TEACHER: User = {
8user_id: "t123",
162// Get teacher data with authentication token
163export async function getTeacherData(token: string): Promise<User | null> {
164// In real implementation, validate token with your API
165// For mock, just return the teacher
166return MOCK_TEACHER;
169// Get all quizzes for a teacher with stats
170export async function getTeacherQuizzes(teacherId: string): Promise<QuizWithStats[]> {
171// In real implementation, fetch from your API
172const teacherQuizzes = MOCK_QUIZZES.filter(q => q.teacher_id === teacherId);
173
180// Get submissions for a specific quiz
181export async function getQuizSubmissions(quizId: string): Promise<QuizSubmission[]> {
182// In real implementation, fetch from your API
183return MOCK_SUBMISSIONS.filter(s => s.quiz_id === quizId);
184}
RoshanMustaqbiltypes.ts2 matches
48}
4950// API Response types
51export interface ApiResponse<T> {
52success: boolean;
53data?: T;
RoshanMustaqbilREADME.md2 matches
9## Project Structure
1011- `backend/` - Server-side code aur API endpoints
12- `index.ts` - Main HTTP handler
13- `types.ts` - TypeScript types
14- `api.ts` - API functions
15- `frontend/` - Client-side code
16- `index.html` - Main HTML template