Version 3.0.1 - Developed by Kevin Moe Myint Myat (m3yevn)
A backend API server for browsing FTP server directories. Accepts host, port, path, username, and password parameters via REST API to connect to FTP servers and return directory data.
🌍 中文版本: 简体中文 README
- ✅ RESTful API: Simple HTTP interface
- ✅ Anonymous FTP Support: Works with anonymous FTP servers
- ✅ Directory Browsing: List FTP server directory contents
- ✅ File Download: Get FTP server file content
- ✅ Vercel Deployment: Production-ready Vercel deployment
- ✅ SEO Optimized: Complete search engine optimization
- ✅ Responsive Design: Works on desktop and mobile
- ✅ Controller-Service Pattern: Clean, maintainable architecture
Try it now: https://ftp-seer-api.vercel.app
FTP Seer API server is also available as a Docker image.
$ docker pull m3yevn/ftp-seer:latest
$ docker run -d --name ftp-seer -p 5050:5050 m3yevn/ftp-seer:latestNow, FTP Seer is accessible at port 5050 of your workstation.
- host: FTP server hostname
- path: Path to browse
- port: FTP port (default: 21)
- username: Username (optional for anonymous FTP)
- password: Password (optional for anonymous FTP)
GET /api/directory?host=ftp.drivehq.com&path=.GET /api/file?host=ftp.drivehq.com&path=ftp_help.htmcurl "https://ftp-seer-api.vercel.app/api/directory?host=ftp.drivehq.com&path=."curl "https://ftp-seer-api.vercel.app/api/file?host=ftp.drivehq.com&path=ftp_help.htm"- Node.js
- Express.js - Web framework
- JSFTP - FTP client library
- Loglestial - Advanced logging system
- PureCSS - CSS framework
- Vercel - Deployment platform
The project follows a Controller-Service pattern for better maintainability:
- Controllers (
/controller/) - Handle HTTP requests and responses - Services (
/services/) - Contain business logic and FTP operations - Utils (
/utils/) - Shared utilities like logging - Config (
/config/) - Application configuration
ftp-seer-api/
├── controller/ # Request handlers
├── services/ # Business logic
├── utils/ # Shared utilities
├── config/ # Configuration
├── public/ # Static files
├── routes.js # Route definitions
├── index.js # Application entry point
├── vercel.json # Vercel configuration
└── package.json # Dependencies
This project is optimized for Vercel deployment:
# Install Vercel CLI
npm install -g vercel
# Deploy to Vercel
vercel
# Deploy to production
vercel --prod- Runtime: Node.js
- Build Command: Automatic
- Output Directory: Root
- Install Command:
npm install
| Method | Route | Description |
|---|---|---|
GET |
/ |
Get API health status |
GET |
/api/directory |
Browse FTP server directory |
GET |
/api/file |
Get FTP server file content |
PORT=5050
NODE_ENV=development
LOG_LEVEL=info
VERCEL=1- Node.js (v14 or higher)
- npm or yarn
# Clone the repository
git clone https://github.com/m3yevn/ftp-seer.git
cd ftp-seer
# Install dependencies
npm install
# Start the development server
npm startThe server will start at http://localhost:5050
- 🏗️ Architecture: Refactored to Controller-Service pattern
- 📝 Logging: Integrated Loglestial logging system
- 🚀 Deployment: Vercel deployment optimization
- 🔍 SEO: Complete SEO optimization with structured data
- 🎨 UI/UX: Improved user interface with radio buttons
- 🛠️ Tech Stack: Updated dependencies and removed legacy code
- 🌐 Frontend: Responsive design and loading states
- 🔧 API: Anonymous FTP support and better error handling
- v2.1.0: Basic FTP functionality with Winston logging
- v1.0.0: Initial release with CircleCI deployment
Kevin Moe Myint Myat (m3yevn)
MIT License - see LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- GitHub Repository: https://github.com/m3yevn/ftp-seer-api
- Live Demo: https://ftp-seer-api.vercel.app
- Docker Hub: https://hub.docker.com/repository/docker/m3yevn/ftp-seer
- Release Notes: https://ftp-seer-api.vercel.app/releases/3.0.1.html
Read this in Simplified Chinese - 看简体中文版本 README.zh-cn