5* Returns null if authentication is successful, or a Response if it fails
6*/
7export async function basicAuthMiddleware(req: Request): Promise<Response | null> {
8const realm = "Usage Dashboard";
9const unauthorizedResponse = new Response("Unauthorized", {
3## FootballBeats - Music & Football Training MVP
45An AI-powered application that seamlessly integrates music and football functionalities to enhance workout and training experiences for football enthusiasts.
67## Features
1import { serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
23export default async function(req: Request) {
4// Serve the main HTML file
5return serveFile("/frontend/index.html", import.meta.url);
MUSALLdatabase.ts2 matches
11* Initialize database tables
12*/
13export async function initDatabase() {
14// Create users table
15await sqlite.execute(`
489490// Initialize some sample drills
491export async function initSampleDrills() {
492const sampleDrills = [
493{
41};
4243// API Functions
44const api = {
45// User-related API calls
184};
185186// UI Functions
187const ui = {
188// Show/hide loading overlay
381`).join('');
382
383// Add close functionality
384const closeButtons = modalClone.querySelectorAll('.close-modal');
385closeButtons.forEach(btn => {
408modalClone.querySelector('.drill-instructions').textContent = drill.instructions;
409
410// Add close functionality
411const closeButtons = modalClone.querySelectorAll('.close-modal');
412closeButtons.forEach(btn => {
436modalClone.querySelector('.session-playlist-description').textContent = session.playlist.description;
437
438// Add view playlist button functionality
439const viewPlaylistBtn = modalClone.querySelector('.view-playlist');
440viewPlaylistBtn.addEventListener('click', () => {
479});
480
481// Add close functionality
482const closeButtons = modalClone.querySelectorAll('.close-modal');
483closeButtons.forEach(btn => {
536});
537
538// Add close functionality
539const closeButtons = modalClone.querySelectorAll('.close-modal');
540closeButtons.forEach(btn => {
596});
597
598// Add close functionality
599const closeButtons = modalClone.querySelectorAll('.close-modal');
600closeButtons.forEach(btn => {
654});
655
656// Add close functionality
657const closeButtons = modalClone.querySelectorAll('.close-modal');
658closeButtons.forEach(btn => {
670671// Event Handlers
672function setupEventListeners() {
673// Profile form submission
674elements.profileForm.addEventListener('submit', async (e) => {
776777// Load user data
778async function loadUserData() {
779try {
780ui.showLoading('Loading your data...');
802803// Initialize the app
804async function initApp() {
805// Setup event listeners
806setupEventListeners();
5export const MESSAGE_LIMIT = 5;
67export function stringToBoard(str: string) {
8// check if even length
9if (str.length % 2 !== 0) {
23}
2425export function App({ board: initialBoard, solutions: initialSolutions, totalSolutions: initialTotalSolutions }: AppProps) {
26const defaultBoard = [
27{ position: 0, inner: "", outer: "", flipped: false },
49// Only fetch a new board if we don't have an initial board
50if (!initialBoard) {
51async function initializeBoard() {
52setIsLoading(true);
53try {
99100useEffect(() => {
101function handleResize() {
102const width = window.innerWidth;
103const height = Math.min(window.innerHeight, width);
open-ai-proxymain.tsx1 match
1export default async function(req: Request): Promise<Response> {
2// const OPENAI_API_KEY = "your_openai_api_key_here";
3
14* Generate a personalized music playlist based on user preferences and context
15*/
16export async function generateMusicPlaylist(
17user: UserProfile,
18request: RecommendationRequest
94* Generate personalized football drill recommendations based on user profile and request
95*/
96export async function generateFootballDrills(
97user: UserProfile,
98request: RecommendationRequest,
184* Generate a complete training session with both music and drills
185*/
186export async function generateTrainingSession(
187user: UserProfile,
188request: RecommendationRequest,
EEPPortalmediaMonitoring.tsx5 matches
10};
1112function MediaMonitoringTab({ user }) {
13const [entries, setEntries] = useState([]);
14const [platform, setPlatform] = useState("");
167};
168169// Function to open the edit modal
170const handleEditClick = (entry) => {
171setEditingEntry(entry);
187};
188189// Function to close the edit modal
190const handleCloseEditModal = () => {
191setIsEditModalOpen(false);
204};
205206// Function to handle changes in the edit modal form
207const handleEditFormChange = (e) => {
208const { name, value } = e.target;
213};
214215// Function to save the edited entry
216const handleSaveEdit = async () => {
217// Validate required fields from editFormData