The codebase that powers boop.cat boop.cat

Add source file headers for license

+4
backend-go/config/config.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package config 2 6 3 7 import (
+4
backend-go/db/admin.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/api_keys.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/atproto.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/custom_domains.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/db.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/deployments.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/email.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/github.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/oauth.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/sites.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/db/users.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package db 2 6 3 7 import (
+4
backend-go/deploy/b2.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/build.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/cloudflare.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/encryption.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/engine.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/git.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/deploy/preview.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package deploy 2 6 3 7 import (
+4
backend-go/handlers/account.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/admin.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/api_keys.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/api_v1.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/atproto.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/auth.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/auth_email.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/custom_domains.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/deploy.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/deploy_extras.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/github.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/github_installed.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/github_webhooks.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/oauth.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/handlers/sites.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package handlers 2 6 3 7 import (
+4
backend-go/lib/dmca.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package lib 2 6 3 7 import (
+4
backend-go/lib/email.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package lib 2 6 3 7 import (
+4
backend-go/lib/encryption.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package lib 2 6 3 7 import (
+4
backend-go/lib/pkce.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package lib 2 6 3 7 import (
+4
backend-go/lib/turnstile.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package lib 2 6 3 7 import (
+4
backend-go/main.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package main 2 6 3 7 import (
+4
backend-go/middleware/auth.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package middleware 2 6 3 7 import (
+4
backend-go/middleware/ratelimit.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package middleware 2 6 3 7 import (
+4
backend-go/middleware/session.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package middleware 2 6 3 7 import (
+4
backend-go/oauth/providers.go
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 package oauth 2 6 3 7 import (
+4
client/src/App.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { Routes, Route, Link, useNavigate } from 'react-router-dom'; 3 7 import Login from './pages/Login.jsx';
+4
client/src/components/MillyLogo.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 export default function MillyLogo({ size = 24, style = {}, ...props }) { 3 7 return (
+4
client/src/components/ThemeToggle.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useEffect, useState } from 'react'; 2 6 3 7 export default function ThemeToggle({ className = '' }) {
+4
client/src/main.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import ReactDOM from 'react-dom/client'; 3 7 import { BrowserRouter } from 'react-router-dom';
+4
client/src/pages/Account.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useEffect, useState } from 'react'; 2 6 import { useNavigate, useOutletContext, useSearchParams } from 'react-router-dom'; 3 7 import { Mail, Lock, AlertTriangle, Link2, Unlink, Key, Copy, Check, Trash2 } from 'lucide-react';
+4
client/src/pages/ApiDocs.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { useNavigate, useOutletContext } from 'react-router-dom'; 3 7 import { Book, Key, Terminal, Copy, Check, ExternalLink } from 'lucide-react';
+4
client/src/pages/DashboardHome.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { Link, useOutletContext } from 'react-router-dom'; 3 7 import MillyLogo from '../components/MillyLogo.jsx';
+4
client/src/pages/DashboardLayout.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useEffect, useMemo, useState } from 'react'; 2 6 import { Link, Outlet, useLocation, useNavigate } from 'react-router-dom'; 3 7 import {
+4
client/src/pages/DashboardSite.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useEffect, useMemo, useState } from 'react'; 2 6 import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; 3 7 import {
+4
client/src/pages/Dmca.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { Link } from 'react-router-dom'; 3 7 import ThemeToggle from '../components/ThemeToggle.jsx';
+4
client/src/pages/Login.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useState, useRef, useEffect, useCallback } from 'react'; 2 6 import ThemeToggle from '../components/ThemeToggle.jsx'; 3 7
+4
client/src/pages/NewSite.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useEffect, useState } from 'react'; 2 6 import { Link, useNavigate, useOutletContext } from 'react-router-dom'; 3 7 import { ArrowLeft, Link as LinkIcon, Github, Lock, Search, Loader2, Book, GitBranch, ArrowRight } from 'lucide-react';
+4
client/src/pages/Privacy.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { Link } from 'react-router-dom'; 3 7 import ThemeToggle from '../components/ThemeToggle.jsx';
+4
client/src/pages/ResetPassword.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useState, useEffect } from 'react'; 2 6 import { useSearchParams, useNavigate } from 'react-router-dom'; 3 7 import ThemeToggle from '../components/ThemeToggle.jsx';
+4
client/src/pages/Signup.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React, { useState, useRef, useEffect, useCallback } from 'react'; 2 6 import ThemeToggle from '../components/ThemeToggle.jsx'; 3 7
+4
client/src/pages/Tos.jsx
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import React from 'react'; 2 6 import { Link } from 'react-router-dom'; 3 7 import ThemeToggle from '../components/ThemeToggle.jsx';
+4
client/vite.config.js
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 import { defineConfig } from 'vite'; 2 6 import react from '@vitejs/plugin-react'; 3 7 import path from 'node:path';
+4
edge/worker.js
··· 1 + // Copyright 2025 boop.cat 2 + // Licensed under the Apache License, Version 2.0 3 + // See LICENSE file for details. 4 + 1 5 const ASSET_EXTENSIONS = 2 6 /\.(js|mjs|css|png|jpg|jpeg|webp|avif|svg|gif|ico|woff|woff2|ttf|otf|eot|map|json|xml|txt|pdf|mp4|webm|mp3|wav)$/i; 3 7