Filter
Exclude
Time range
-
Near
19 Sep 2025
Day 19 #30DaysOfCode Google & GitHub Sign-In WORKING! βœ… One-click auth with Google βœ… Seamless login with GitHub βœ… Real-time user state logout Real auth. Real users. Real progress. πŸ”—: validation-yup-ebon.vercel.a… #React #Firebase #GitHubAuth #BuildInPublic #WomenInTech
2
19
116
Day 6 of #100DaysOfCode βœ… πŸ” Integrated Google GitHub login via Passport.js πŸ› οΈ Created /api/profile route (bio, skills, socials) Building a solid auth flow for DevConnect πŸš€ #MERN #NodeJS #OAuth #GoogleAuth #GitHubAuth #ReactJS #100DaysChallenge
3
42
13 May 2025
🚨Need user login fast? Get Google & GitHub auth set up in under a minute! No code, no stress. Watch this snippet to see how it’s done πŸ”— youtu.be/Lo61V-8uxrA #abp #googlelogin #githubauth #userauthentication
2
160
Generated from Claud with no prior context except the seed: "Hi Claude I want to serve search results from a Github codebase using vector search over the chunks of the code base. Tell me some high level software architecture designs for this description:" And had a couple of phases of conversation. And it managed to produce this. Very based Claude, very based /vector-search-github/ β”œβ”€β”€ data_ingestion/ β”‚ β”œβ”€β”€ github_api_client.py β”‚ β”‚ class GitHubAuth: β”‚ β”‚ - token: str β”‚ β”‚ __init__(token: str) β”‚ β”‚ get_headers() -> dict β”‚ β”‚ β”‚ β”‚ class GitHubRepo: β”‚ β”‚ - name: str β”‚ β”‚ - api_url: str β”‚ β”‚ __init__(name: str, api_url: str) β”‚ β”‚ get_file_list() -> list[str] β”‚ β”‚ β”‚ β”‚ class GitHubClient: β”‚ β”‚ - auth: GitHubAuth β”‚ β”‚ __init__(auth: GitHubAuth) β”‚ β”‚ fetch_repository(repo: GitHubRepo) -> dict β”‚ β”‚ get_file_content(repo: GitHubRepo, file_path: str) -> str β”‚ β”‚ get_commit_history(repo: GitHubRepo, file_path: str) -> list β”‚ β”‚ β”‚ β”œβ”€β”€ code_chunker.py β”‚ β”‚ class ChunkConfig: β”‚ β”‚ - chunk_size: int β”‚ β”‚ - overlap: int β”‚ β”‚ __init__(chunk_size: int, overlap: int) β”‚ β”‚ β”‚ β”‚ class Chunk: β”‚ β”‚ - content: str β”‚ β”‚ - start_line: int β”‚ β”‚ - end_line: int β”‚ β”‚ __init__(content: str, start_line: int, end_line: int) β”‚ β”‚ β”‚ β”‚ class CodeChunker: β”‚ β”‚ - config: ChunkConfig β”‚ β”‚ __init__(config: ChunkConfig) β”‚ β”‚ chunk_code(code_string: str) -> list[Chunk] β”‚ β”‚ process_file(file_content: str) -> list[Chunk] β”‚ β”‚ β”‚ β”œβ”€β”€ text_embedding.py β”‚ β”‚ class EmbeddingModel: β”‚ β”‚ - name: str β”‚ β”‚ - dimension: int β”‚ β”‚ __init__(name: str, dimension: int) β”‚ β”‚ load() -> None β”‚ β”‚ β”‚ β”‚ class TextEmbedder: β”‚ β”‚ - model: EmbeddingModel β”‚ β”‚ __init__(model: EmbeddingModel) β”‚ β”‚ embed_text(text: str) -> np.ndarray β”‚ β”‚ embed_chunks(chunks: list[Chunk]) -> list[np.ndarray] β”‚ β”‚ β”‚ β”‚ class SimilarityCalculator: β”‚ β”‚ compute_similarity(vec1: np.ndarray, vec2: np.ndarray) -> float β”‚ β”‚ β”‚ β”œβ”€β”€ code_analyzer.py β”‚ β”‚ class CodeStructure: β”‚ β”‚ - functions: list[str] β”‚ β”‚ - classes: list[str] β”‚ β”‚ __init__(functions: list[str], classes: list[str]) β”‚ β”‚ β”‚ β”‚ class ComplexityMetrics: β”‚ β”‚ - cyclomatic_complexity: int β”‚ β”‚ - cognitive_complexity: int β”‚ β”‚ __init__(cyclomatic_complexity: int, cognitive_complexity: int) β”‚ β”‚ β”‚ β”‚ class CodeAnalyzer: β”‚ β”‚ extract_structure(code: str) -> CodeStructure β”‚ β”‚ analyze_complexity(code: str) -> ComplexityMetrics β”‚ β”‚ detect_language(code: str) -> str β”œβ”€β”€ vector_database/ β”‚ β”œβ”€β”€ vector_store.py β”‚ β”‚ class VectorEntry: β”‚ β”‚ - id: str β”‚ β”‚ - vector: np.ndarray β”‚ β”‚ - metadata: dict β”‚ β”‚ __init__(id: str, vector: np.ndarray, metadata: dict) β”‚ β”‚ β”‚ β”‚ class VectorStore: β”‚ β”‚ - database: DatabaseManager β”‚ β”‚ __init__(database: DatabaseManager) β”‚ β”‚ insert_vector(entry: VectorEntry) -> None β”‚ β”‚ search_similar(query_vector: np.ndarray, top_k: int) -> list[VectorEntry] β”‚ β”‚ delete_vector(vector_id: str) -> None β”‚ β”‚ update_vector(vector_id: str, new_entry: VectorEntry) -> None β”‚ β”‚ β”‚ β”œβ”€β”€ indexing.py β”‚ β”‚ class IndexConfig: β”‚ β”‚ - algorithm: str β”‚ β”‚ - parameters: dict β”‚ β”‚ __init__(algorithm: str, parameters: dict) β”‚ β”‚ β”‚ β”‚ class VectorIndex: β”‚ β”‚ - config: IndexConfig β”‚ β”‚ - index: Any # Placeholder for the actual index structure β”‚ β”‚ __init__(config: IndexConfig) β”‚ β”‚ build_index(vectors: list[np.ndarray]) -> None β”‚ β”‚ query(query_vector: np.ndarray, num_results: int) -> list[int] β”‚ β”‚ add_to_index(vector: np.ndarray, id: int) -> None β”‚ β”‚ remove_from_index(id: int) -> None β”‚ β”‚ β”‚ β”œβ”€β”€ database_manager.py β”‚ β”‚ class DatabaseConfig: β”‚ β”‚ - url: str β”‚ β”‚ - max_connections: int β”‚ β”‚ __init__(url: str, max_connections: int) β”‚ β”‚ β”‚ β”‚ class DatabaseManager: β”‚ β”‚ - config: DatabaseConfig β”‚ β”‚ - connection: Any # Placeholder for the actual database connection β”‚ β”‚ __init__(config: DatabaseConfig) β”‚ β”‚ create_tables() -> None β”‚ β”‚ execute_query(query: str, params: tuple) -> None β”‚ β”‚ fetch_all(query: str, params: tuple) -> list β”‚ β”‚ close_connection() -> None β”œβ”€β”€ search_api/ β”‚ β”œβ”€β”€ query_handler.py β”‚ β”‚ class Query: β”‚ β”‚ - text: str β”‚ β”‚ - filters: dict β”‚ β”‚ __init__(text: str, filters: dict) β”‚ β”‚ β”‚ β”‚ class SearchResult: β”‚ β”‚ - content: str β”‚ β”‚ - similarity: float β”‚ β”‚ - metadata: dict β”‚ β”‚ __init__(content: str, similarity: float, metadata: dict) β”‚ β”‚ β”‚ β”‚ class QueryHandler: β”‚ β”‚ - vector_store: VectorStore β”‚ β”‚ - text_embedder: TextEmbedder β”‚ β”‚ __init__(vector_store: VectorStore, text_embedder: TextEmbedder) β”‚ β”‚ process_query(query: Query) -> list[SearchResult] β”‚ β”‚ format_results(search_results: list[SearchResult]) -> list[dict] β”‚ β”‚ β”‚ β”œβ”€β”€ vector_converter.py β”‚ β”‚ class VectorConverter: β”‚ β”‚ - text_embedder: TextEmbedder β”‚ β”‚ __init__(text_embedder: TextEmbedder) β”‚ β”‚ text_to_vector(text: str) -> np.ndarray β”‚ β”‚ β”‚ β”‚ class VectorCompressor: β”‚ β”‚ - compression_method: str β”‚ β”‚ __init__(compression_method: str) β”‚ β”‚ compress_vector(vector: np.ndarray) -> np.ndarray β”‚ β”‚ decompress_vector(compressed_vector: np.ndarray) -> np.ndarray β”‚ β”‚ β”‚ β”œβ”€β”€ similarity_search.py β”‚ β”‚ class SearchConfig: β”‚ β”‚ - top_k: int β”‚ β”‚ - similarity_threshold: float β”‚ β”‚ __init__(top_k: int, similarity_threshold: float) β”‚ β”‚ β”‚ β”‚ class SimilaritySearch: β”‚ β”‚ - vector_store: VectorStore β”‚ β”‚ - vector_index: VectorIndex β”‚ β”‚ - config: SearchConfig β”‚ β”‚ __init__(vector_store: VectorStore, vector_index: VectorIndex, config: SearchConfig) β”‚ β”‚ search(query_vector: np.ndarray) -> list[SearchResult] β”‚ β”‚ range_search(query_vector: np.ndarray, radius: float) -> list[SearchResult] β”‚ β”‚ β”‚ β”œβ”€β”€ search_optimizer.py β”‚ β”‚ class QueryCache: β”‚ β”‚ - cache: dict β”‚ β”‚ - max_size: int β”‚ β”‚ __init__(max_size: int) β”‚ β”‚ add(query: str, results: list[SearchResult]) -> None β”‚ β”‚ get(query: str) -> list[SearchResult] β”‚ β”‚ β”‚ β”‚ class SearchOptimizer: β”‚ β”‚ - similarity_search: SimilaritySearch β”‚ β”‚ - query_cache: QueryCache β”‚ β”‚ __init__(similarity_search: SimilaritySearch, query_cache: QueryCache) β”‚ β”‚ optimize_query(query: str) -> str β”‚ β”‚ cache_frequent_queries(query_history: list[str]) -> None β”‚ β”‚ suggest_related_queries(query: str) -> list[str] β”œβ”€β”€ web_interface/ β”‚ β”œβ”€β”€ app.py β”‚ β”‚ class FlaskApp: β”‚ β”‚ - app: Flask β”‚ β”‚ - query_handler: QueryHandler β”‚ β”‚ __init__(query_handler: QueryHandler) β”‚ β”‚ index() -> str β”‚ β”‚ search() -> str β”‚ β”‚ advanced_search() -> str β”‚ β”‚ api_search() -> dict β”œβ”€β”€ background_jobs/ β”‚ β”œβ”€β”€ update_codebase.py β”‚ β”‚ class UpdateTask: β”‚ β”‚ - repo: GitHubRepo β”‚ β”‚ - last_update: datetime β”‚ β”‚ __init__(repo: GitHubRepo) β”‚ β”‚ β”‚ β”‚ class CodebaseUpdater: β”‚ β”‚ - github_client: GitHubClient β”‚ β”‚ - vector_store: VectorStore β”‚ β”‚ - tasks: list[UpdateTask] β”‚ β”‚ __init__(github_client: GitHubClient, vector_store: VectorStore) β”‚ β”‚ check_for_updates() -> list[str] β”‚ β”‚ process_updates(updates: list[str]) -> None β”‚ β”‚ β”‚ β”œβ”€β”€ refresh_vector_db.py β”‚ β”‚ class RefreshTask: β”‚ β”‚ - chunk: Chunk β”‚ β”‚ - last_refresh: datetime β”‚ β”‚ __init__(chunk: Chunk) β”‚ β”‚ β”‚ β”‚ class VectorDBRefresher: β”‚ β”‚ - vector_store: VectorStore β”‚ β”‚ - code_chunker: CodeChunker β”‚ β”‚ - text_embedder: TextEmbedder β”‚ β”‚ - tasks: list[RefreshTask] β”‚ β”‚ __init__(vector_store: VectorStore, code_chunker: CodeChunker, text_embedder: TextEmbedder) β”‚ β”‚ refresh_database() -> None β”‚ β”‚ process_chunk(chunk: Chunk) -> None β”‚ β”‚ β”‚ β”œβ”€β”€ job_scheduler.py β”‚ β”‚ class Job: β”‚ β”‚ - id: str β”‚ β”‚ - func: callable β”‚ β”‚ - trigger: str β”‚ β”‚ - kwargs: dict β”‚ β”‚ __init__(id: str, func: callable, trigger: str, **kwargs) β”‚ β”‚ β”‚ β”‚ class JobScheduler: β”‚ β”‚ - jobs: list[Job] β”‚ β”‚ __init__() β”‚ β”‚ add_job(job: Job) -> None β”‚ β”‚ remove_job(job_id: str) -> None β”‚ β”‚ start() -> None β”‚ β”‚ shutdown() -> None β”œβ”€β”€ config/ β”‚ β”œβ”€β”€ settings.py β”‚ β”œβ”€β”€ logging_config.py β”‚ β”‚ class LogConfig: β”‚ β”‚ - level: str β”‚ β”‚ - format: str β”‚ β”‚ - file: str β”‚ β”‚ __init__(level: str, format: str, file: str) β”‚ β”‚ β”‚ β”‚ setup_logging(config: LogConfig) -> None β”‚ β”‚ get_logger(name: str) -> Logger β”œβ”€β”€ utils/ β”‚ β”œβ”€β”€ performance_monitor.py β”‚ β”‚ class Timer: β”‚ β”‚ - start_time: float β”‚ β”‚ - end_time: float β”‚ β”‚ start() -> None β”‚ β”‚ stop() -> float β”‚ β”‚ β”‚ β”‚ class PerformanceMonitor: β”‚ β”‚ - timers: dict[str, Timer] β”‚ β”‚ - memory_usage: list[float] β”‚ β”‚ start_timer(operation: str) -> None β”‚ β”‚ stop_timer(operation: str) -> float β”‚ β”‚ log_memory_usage() -> None β”‚ β”‚ generate_report() -> dict β”‚ β”‚ β”‚ β”œβ”€β”€ error_handler.py β”‚ β”‚ class ErrorContext: β”‚ β”‚ - module: str β”‚ β”‚ - function: str β”‚ β”‚ - parameters: dict β”‚ β”‚ __init__(module: str, function: str, parameters: dict) β”‚ β”‚ β”‚ β”‚ class ErrorHandler: β”‚ β”‚ - logger: Logger β”‚ β”‚ __init__(logger: Logger) β”‚ β”‚ handle_error(error: Exception, context: ErrorContext) -> None β”‚ β”‚ log_error(error: Exception, context: ErrorContext) -> None β”‚ β”‚ notify_admin(error: Exception, context: ErrorContext) -> None β”œβ”€β”€ tests/ β”‚ β”œβ”€β”€ test_github_api_client.py β”‚ β”œβ”€β”€ test_code_chunker.py β”‚ β”œβ”€β”€ test_text_embedding.py β”‚ β”œβ”€β”€ test_vector_store.py β”‚ β”œβ”€β”€ test_query_handler.py β”‚ β”œβ”€β”€ test_similarity_search.py β”‚ └── test_web_interface.py └── main.py initialize_components() -> tuple setup_background_jobs(job_scheduler: JobScheduler) -> None main() -> None

1
1
71
14 Jul 2019
Crucial detail: this library isn't just for use as a Datasette plugin. If you're writing your own ASGI apps using something like @_tomchristie's excellent Starlette you can wrap your application in my GitHubAuth middleware to add GitHub authentication to it - see blog for details
1
8 Jul 2019
And because it's ASGI, you don't even need to be running Datasette to add GitHub authentication to your own project: just wrap your ASGI application in my GitHubAuth ASGI middleware class.
1
1
10
[GitHubAuth by @tnantoka] Dead simple github login cocoapods.org/pods/GitHubAut…

1