A futuristic, minimal NAS dashboard for managing files on a tablet-based FTP server.
Built with React, TypeScript, and Express β deployed on Vercel (frontend) and Railway (backend).
- π Browse files β Navigate directories with animated breadcrumbs
- β¬οΈ Upload files β Drag-and-drop with multi-file queue
- β¬οΈ Download files β One-click downloads
- ποΈ Delete files β Confirmation modal with safety checks
- π Create folders β Organize your NAS storage
- π Real-time refresh β Instant directory updates
- π¨ Futuristic UI β Glassmorphism, neon accents, smooth animations
βββββββββββββββββββ HTTPS βββββββββββββββββββ FTP βββββββββββββββββββ
β β ββββββββββββΊ β β ββββββββββββΊ β β
β Frontend β β Backend β β Tablet NAS β
β (Vercel) β β (Railway) β β (FTP Server) β
β β β β β β
β React + Vite β β Express + β β Android/iOS β
β TailwindCSS β β basic-ftp β β FTP App β
β Framer Motion β β β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
pocket-nas/
βββ frontend/ # React + TypeScript UI
β βββ src/
β β βββ api/ # API client (axios)
β β βββ components/ # React components
β β β βββ Header.tsx
β β β βββ Breadcrumbs.tsx
β β β βββ Toolbar.tsx
β β β βββ UploadZone.tsx
β β β βββ FileGrid.tsx
β β β βββ FileCard.tsx
β β β βββ CreateFolderModal.tsx
β β β βββ DeleteConfirmModal.tsx
β β βββ utils/ # Helper functions
β β βββ App.tsx # Main application
β β βββ index.css # Design system
β βββ vercel.json # Vercel deployment config
β βββ vite.config.ts # Vite + Tailwind config
β
βββ backend/ # Node.js API server
β βββ src/
β β βββ routes/ # Express route handlers
β β β βββ files.ts # File operations
β β β βββ folders.ts # Folder operations
β β βββ services/ # Business logic
β β β βββ ftp.service.ts # FTP client wrapper
β β βββ index.ts # Server entry point
β βββ Dockerfile # Docker deployment
β βββ .env.example # Environment template
β
βββ shared/ # Shared TypeScript types
β βββ types.ts
β
βββ docs/ # Documentation
β βββ ARCHITECTURE.md
β βββ DEPLOYMENT.md
β
βββ scripts/ # Dev utilities
β βββ setup.sh
β βββ dev.sh
β
βββ .github/workflows/ # CI pipeline
βββ ci.yml
- Node.js 20+
- npm 10+
- An FTP server running on your tablet (e.g., Solid Explorer, FTP Server app)
git clone https://github.com/Bhargi777/pocket-nas.git
cd pocket-nas
chmod +x scripts/setup.sh
./scripts/setup.shEdit backend/.env with your FTP server details:
FTP_HOST=192.168.1.100 # Your tablet's IP address
FTP_USER=admin # FTP username
FTP_PASSWORD=password # FTP password
FTP_PORT=21 # FTP port (usually 21)
PORT=4000 # Backend server port
FRONTEND_URL=http://localhost:5173# Option A: Both servers at once
./scripts/dev.sh
# Option B: Start separately
cd backend && npm run dev # Terminal 1
cd frontend && npm run dev # Terminal 2Visit http://localhost:5173
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Server health check |
GET |
/api/files?path=/ |
List files in directory |
POST |
/api/upload |
Upload file (multipart form) |
GET |
/api/download/:name?path=/ |
Download a file |
DELETE |
/api/files/:name?path=/ |
Delete a file |
POST |
/api/folder |
Create a new folder |
DELETE |
/api/folder/:name?path=/ |
Delete a folder |
- Import this repo on vercel.com
- Set root directory to
frontend - Add env variable:
VITE_API_URL= your backend URL - Deploy
- Import this repo on railway.app
- Set root directory to
backend - Add env variables:
FTP_HOST,FTP_USER,FTP_PASSWORD,FRONTEND_URL - Deploy
See docs/DEPLOYMENT.md for detailed instructions.
- Never commit
.envfiles β they contain FTP credentials - CORS is configured to allow only the specified frontend origin
- File size limit is set to 500 MB per upload
- FTP connections are created per-request and closed immediately after
- Use FTPS (FTP over TLS) in production when possible
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18 | UI framework |
| Frontend | TypeScript 5 | Type safety |
| Frontend | Vite 7 | Build tool |
| Frontend | Tailwind CSS v4 | Styling |
| Frontend | Framer Motion | Animations |
| Frontend | Axios | HTTP client |
| Backend | Node.js | Runtime |
| Backend | Express | HTTP server |
| Backend | basic-ftp | FTP client |
| Backend | Multer | File uploads |
| Infra | Vercel | Frontend hosting |
| Infra | Railway | Backend hosting |
| Infra | Docker | Containerization |
| CI/CD | GitHub Actions | Automated builds |
MIT License β see LICENSE for details.
Built with β by Bhargi777