Why FileJar: Skip the Complexity of S3
Every project needs file uploads. Every time, it's a headache. Learn how FileJar eliminates the S3 setup burden with type-safe APIs and one simple integration.
Every. Single. Project. You need file uploads. And every single time, you're back to configuring S3 buckets, wrestling with IAM policies, and debugging CORS errors at 2 AM.
FileJar removes this burden entirely.
The S3 Problem
Setting up S3 for file uploads is overwhelming. Here's what you typically need to do:
- Define IAM roles and policies
- Configure CORS for browser-based uploads
- Manually create presigned URLs
- Manage bucket permissions and security settings
- Coordinate multiple environments (dev, staging, prod)
- Troubleshoot CORS problems across different browsers
- Build robust access control mechanisms
- Establish lifecycle management policies
- Integrate with CDN services
- Account for error scenarios and retry logic
And that's just the setup. Securing S3 requires constant attention:
- Design IAM policies adhering to least privilege principles
- Verify presigned URL expiration works as expected
- Block unauthorized access attempts
- Enforce file type and size restrictions
- Add rate limiting protection
- Configure comprehensive logging and monitoring
- Apply security headers appropriately
- Safely store and manage secrets and credentials
This is hours—sometimes days—of work for something that should be simple.
The FileJar Solution
Upload a file in just a few lines:
import Filejar from 'filejar';
const filejar = new Filejar({
apiKey: process.env.FILEJAR_API_KEY,
});
// Upload a file
const result = await filejar.upload.uploadFile([file]);
const fileUrl = `https://cdn.filejar.dev/${result.response[0].key}`;
// Done! Your file is live on CDNThat's it. No configuration. No setup. Just upload and go.
Your file is immediately available on our global CDN. No additional integration required.
Works With Your Stack
FileJar integrates seamlessly with popular Node.js frameworks:
Express.js
Use FileJar with Express and Multer for handling multipart uploads:
import express from 'express';
import multer from 'multer';
import Filejar from 'filejar';
const upload = multer();
const filejar = new Filejar({ apiKey: process.env.FILEJAR_API_KEY });
app.post('/upload', upload.single('file'), async (req, res) => {
const result = await filejar.upload.uploadFile([req.file]);
res.json({ url: `https://cdn.filejar.dev/${result.response[0].key}` });
});Hono
Fast and lightweight with built-in file handling:
import { Hono } from 'hono';
import Filejar from 'filejar';
const app = new Hono();
const filejar = new Filejar({ apiKey: process.env.FILEJAR_API_KEY });
app.post('/upload', async (c) => {
const body = await c.req.parseBody();
const file = body['file'];
const result = await filejar.upload.uploadFile([file]);
return c.json({ url: `https://cdn.filejar.dev/${result.response[0].key}` });
});And More
FileJar also provides recipes for:
- Fastify — High-performance framework with @fastify/multipart plugin
- NestJS — Enterprise-grade framework with decorators and dependency injection
- ElysiaJS — TypeScript-first framework with built-in type validation
What You Get
- Type-safe APIs — Full TypeScript support out of the box
- Built-in auth hooks — Secure uploads without the headache
- Beautiful dashboard — Manage your files visually
- Global CDN — Files served fast, everywhere
- Zero configuration — Works immediately in any environment
Get Started
- Sign up at https://filejar.dev/dashboard
- Create an API key
- Install the SDK:
npm install filejar - Start uploading
Check out our documentation for detailed guides and API reference.
Stop fighting with S3. Start shipping features.