Project Ideas and Inspirations
This document lists the system-level projects to build in any programming language, preferably lower level ones like Go.
Networking / Systems
- HTTP Reverse Proxy (ngrok-like) — multiplex TCP over single connection, handle TLS termination.
- HTTP/2 and HTTP/3 Server — implement protocol framing, multiplexing, header compression (HPACK/QPACK).
- In-memory Cache (Redis clone) — implement eviction (LRU, LFU, ARC), AOF/RDB persistence.
- Traceroute / Ping Utility — raw sockets, ICMP packet crafting, TTL manipulation.
- VPN/Tunnel Protocol — implement custom tunneling using UDP, encryption, and NAT traversal.
- Custom Load Balancer — round-robin, least-connections, consistent hashing.
- DNS Resolver — parse DNS packets, implement caching and recursion.
- Message Queue (like NATS/Kafka-lite) — build a broker with pub/sub, ACKs, retention, and partitioning.
- SSH Server — build your own SSH handling server using crypto primitives and session multiplexing.
- File Sync Tool (rsync-like) — rolling checksum (Rabin-Karp), delta encoding, and resumable uploads.
Storage / Databases
- SQL Engine (SQLite-lite) — implement tokenizer, parser, query planner, B-Tree storage.
- Key-Value Store (BoltDB or BadgerDB clone) — implement WAL, MVCC, page management.
- Full-Text Search Engine (like Bleve or Lucene) — inverted index, tokenization, ranking (TF-IDF).
- Time-Series DB (like Prometheus) — compression, block storage, LSM tree, query engine.
- Blob Storage Server (S3-like) — multipart uploads, versioning, metadata indexing.
Concurrency / OS Simulation
- Goroutine Scheduler Simulator — simulate preemptive scheduling, work stealing, queues.
- Custom Thread Pool / Worker Pool Framework — task queue, backpressure, rate limiting.
- Process Supervisor (like systemd) — spawn, monitor, restart, and isolate processes.
- In-memory File System — directory tree, inode structure, journaling simulation.
- Container Runtime (Docker-lite) — use namespaces, cgroups, overlayfs, image layers.
Security / Networking Tools
- TLS Handshake Implementation — implement client/server handshake from RFC.
- Packet Sniffer (tcpdump-like) — use
AF_PACKET, parse Ethernet/IP/TCP layers. - Firewall (iptables-like) — define packet filtering rules, NFQUEUE integration.
- HTTP/3 (QUIC) Implementation — frame parsing, connection migration, loss recovery.
- Web Application Firewall — pattern matching, rate limiting, rule-based blocking.
Distributed Systems
- Raft Consensus Implementation — leader election, log replication, membership changes.
- Distributed Key-Value Store — use Raft or Paxos for consensus.
- Service Mesh (Istio-lite) — sidecar proxy injection, service discovery, tracing.
- Distributed Job Scheduler (like Celery) — worker coordination, retries, result backend.
- Log Aggregator (like Fluentd) — tail log files, apply filters, send to multiple outputs.
Sequence
Here is my current plan to build such projects step-by-step:
- Reverse proxy (jprq-like)
- In-Memory Cache (Redis-like)
- SQL engine (SQLite-like)
- Packet Sniffer (tcpdump-like)
- Container runtime (docker-like).