How I Built FileShot as a College Student
— Written by Brendan G., Founder & Developer
Building a file sharing platform while juggling college coursework, exams, and life isn't easy. But it's possible. Here's how I did it, the challenges I faced, and what I learned along the way.
The Beginning: An Idea During Class
It started during a Computer Information Systems lecture about encryption and security. The professor was explaining how most cloud services work—files encrypted at rest, but the service provider holds the keys. I thought: "There has to be a better way."
That night, I started sketching out what a truly private file sharing service would look like. Zero-knowledge encryption. Client-side encryption. No server-side access. The idea for FileShot was born.
Time Management: The Biggest Challenge
As a CIS major, I had a full course load: database systems, network security, software engineering, and more. Finding time to build FileShot meant coding early mornings before classes, usually from 5-7 AM when my mind was fresh. Late nights after finishing homework often extended until 2 AM, fueled by caffeine and determination. Weekends became dedicated development time for tackling larger features and refactoring. Even study breaks turned into opportunities for quick bug fixes and feature planning.
The key was consistency. Even 30 minutes a day adds up. I treated FileShot like another class—something that required regular attention and couldn't be crammed.
The Technical Stack
I chose technologies I was already learning in school, which helped me apply coursework to real-world problems. The backend runs on Node.js with Express, leveraging JavaScript skills from web development courses. SQLite serves as the database, perfect for learning database concepts in a practical context. The frontend uses vanilla JavaScript without frameworks, allowing me to master core JS concepts rather than framework-specific abstractions. Client-side encryption uses CryptoJS implementing AES-256 encryption. Storage relies on the local file system—simple, reliable, and cost-effective for a student budget.
Using familiar technologies meant I could focus on building features instead of learning new frameworks. This was crucial for making progress while managing schoolwork.
Learning Zero-Knowledge Encryption
The hardest part was implementing true zero-knowledge encryption. My CIS courses covered encryption theory, but implementing it correctly required deep research into understanding AES-256 encryption and key derivation functions, implementing client-side encryption that occurs before upload begins, ensuring encryption keys never touch the server under any circumstances, handling password-based key derivation securely to prevent weak key generation, and making the encryption process transparent and independently verifiable. I spent weeks reading cryptography papers, studying open-source implementations, and testing different approaches. The encryption code is now open-source so others can verify it works correctly.
Building Features That Matter
As a student, I had limited time, so I focused on features that directly supported privacy. Zero-knowledge encryption formed the core feature providing cryptographic protection. File expiration enabled automatic deletion to minimize data exposure over time. Password protection added an additional layer of security for sensitive files. No tracking meant truly no analytics, no cookies, and no data collection whatsoever. Fast uploads were optimized for speed without compromising security. I avoided features that didn't align with privacy goals including social sharing, collaboration tools that require server access, and file previews that could compromise security.
Testing and Security
Security was non-negotiable. I couldn't risk user data, so I tested encryption with various file types and sizes to ensure reliability across all content. I verified that encryption keys never leave the client by inspecting network traffic and server logs. I checked that encrypted files are truly unreadable on the server by attempting to access them directly. Virus scanning for uploaded files prevents malware distribution. Rate limiting prevents abuse from malicious actors or buggy scripts.
My network security course helped me understand attack vectors and how to defend against them. Every feature was built with security in mind from the start.
Balancing School and Development
The reality is that building FileShot sometimes meant less time for social activities, though I still made time for my dogs who kept me sane. Prioritizing development over some optional coursework was necessary when deadlines conflicted. Using FileShot as a portfolio project for classes turned the tradeoff into an advantage. Learning to say no to feature requests that didn't align with privacy goals kept the project focused.
But it also meant applying coursework directly to a real project rather than just theoretical exercises. Building something I was passionate about made the long hours feel worthwhile. Learning skills that go beyond the classroom prepared me for real-world development. Creating a portfolio piece that demonstrates real-world skills gave me tangible proof of capability for internships and jobs.
Lessons Learned
Building FileShot taught me:
The lessons I learned along the way: Start simple because the first version should be basic but functional, with features coming later through iteration. Build security first since it's far easier to implement securely from the start than to retrofit security into an insecure codebase. Open source builds trust by making encryption code public, demonstrating you have nothing to hide. Privacy is a feature rather than a limitation—not tracking users becomes a powerful selling point in today's surveillance economy. Finally, consistency beats intensity as regular small progress consistently outperforms occasional big pushes that burn you out.
Advice for Student Developers
If you're a student thinking about building something, here's my advice. Use what you're learning by applying coursework concepts to real projects where you'll encounter edge cases textbooks don't cover. Start small by building an MVP first and adding features iteratively rather than attempting to build everything at once. Time block development time like you schedule study sessions, treating it as non-negotiable rather than optional. Focus on one thing by resisting scope creep and feature requests that distract from your core vision. Learn as you build because you don't need to know everything before starting?in fact, you'll learn faster by solving real problems than by reading documentation in isolation.
What's Next
FileShot continues to evolve. As I finish my degree and learn more about security, privacy, and system design, I apply those lessons to improve FileShot. The goal remains the same: provide the most private file sharing solution possible.
Building FileShot as a student wasn't easy, but it was worth it. I created something I'm proud of, learned invaluable skills, and built a tool that truly respects user privacy.
"You don't need to wait until after graduation to build something meaningful. Start now, learn as you go, and don't be afraid to ship something imperfect."
Try FileShot
If you're interested in seeing what a student developer can build with a focus on privacy, give FileShot a try. It's free to start, and your files are encrypted before they ever leave your device.