- Project Overview
- Features
- Architecture
- Tech Stack
- Installation
- Quick Start
- Configuration
- Usage
- Contributing
- Code of Conduct
- License
- Support
SyncPoint is a modern, lightweight, and intuitive cross-platform file manager designed to streamline file operations across Windows, macOS, and Linux. Built with performance and user experience in mind, SyncPoint provides seamless file synchronization, advanced search capabilities, and intelligent organization tools for users who work with multiple devices and require reliable file management.
Whether you're a developer managing project files, a creative professional organizing assets, or a business user handling documentation, SyncPoint simplifies file management with an elegant interface and powerful backend capabilities.
- π Fast & Responsive: Optimized for performance with instant file operations
- π Smart Sync: Automatic file synchronization across devices
- π Advanced Search: Intelligent search with multiple filter options
- π¨ Modern UI: Clean, intuitive interface following platform conventions
- π Secure: End-to-end encryption for sensitive files
- β‘ Lightweight: Minimal resource footprint with maximum functionality
- Multi-Platform Support: Native applications for Windows, macOS, and Linux
- Dual-Pane Interface: Side-by-side directory navigation for efficient file operations
- Drag & Drop Support: Intuitive file movement and organization
- Quick Preview: Built-in file preview for images, documents, and media
- Tabbed Navigation: Multiple directory tabs for seamless workflow
- Keyboard Shortcuts: Comprehensive keyboard support for power users
- File Synchronization: One-way and bi-directional sync between directories
- Smart Search: Full-text search with regex support and advanced filters
- Batch Operations: Rename, move, copy, and delete multiple files simultaneously
- Custom Filters: Create and save custom file filtering rules
- File Bookmarks: Quick access to frequently used directories
- Undo/Redo: Full operation history with undo/redo capabilities
- Archive Support: Built-in support for ZIP, TAR, 7Z, and RAR formats
- Cloud Integration: Native integration with major cloud storage providers
- Auto-Categorization: Automatically organize files by type, date, or custom rules
- File Tags: Add custom tags for better file organization and retrieval
- Color Labels: Visual organization using color-coded labels
- Duplicate Finder: Identify and manage duplicate files efficiently
- Space Analyzer: Visualize disk usage and identify space-consuming files
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Interface Layer (UI) β
β ββββββββββββββ ββββββββββββββ ββββββββββββββββ β
β β Main β β File Tree β β Preview β β
β β Window β β View β β Panel β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β Business Logic Layer (Services) β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β File Manager β Search Engine β Sync β β
β β Service β Service β Service β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β Data Access Layer (File System, API) β
β ββββββββββββββ ββββββββββββββ ββββββββββββββββ β
β β File I/O β β Database β β Cloud API β β
β β Operationsβ β Layer β β Integration β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β System Layer (OS APIs & Services) β
β File System β Notifications β Security β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Responsibility |
|---|---|
| UI Layer | Renders user interface and handles user interactions |
| Service Layer | Implements business logic and core functionality |
| Data Access | Manages file I/O, database queries, and external API calls |
| System Layer | Interfaces with operating system and platform-specific features |
main
βββ ui
β βββ components
β βββ services
β βββ utils
βββ core
β βββ file-manager
β βββ sync-engine
β βββ search-engine
β βββ archive-handler
βββ services
β βββ cloud-integration
β βββ encryption
β βββ notifications
βββ database
β βββ models
β βββ migrations
βββ utils
βββ logger
βββ validators
βββ helpers
- Framework: Electron.js v20.0+
- UI Library: React 18.x with TypeScript
- Styling: CSS-in-JS (Styled Components) with Tailwind CSS
- State Management: Redux Toolkit for global state
- Component Library: Material-UI v5.x
- Runtime: Node.js v18.0+
- File Operations: Native Node.js fs module with custom abstractions
- Database: SQLite for metadata and settings
- API Client: Axios for HTTP requests
- Real-time Monitoring: Chokidar for file system watching
- Package Manager: npm v9.0+
- Build Tool: Webpack 5.x
- Module Bundler: Rollup for library builds
- Testing: Jest & React Testing Library
- Linting: ESLint with Prettier
- Type Checking: TypeScript 5.x
- Documentation: JSDoc with automated generation
- Version Control: Git
- CI/CD: GitHub Actions
- Release Management: Electron Builder
- Code Coverage: Codecov
- Documentation Hosting: GitHub Pages
- Cloud Storage: AWS S3, Google Drive, OneDrive APIs
- Encryption: OpenSSL, libsodium
- Compression: 7-Zip, p7zip libraries
Before installing SyncPoint, ensure you have the following:
- Node.js: v18.0.0 or higher (Download)
- npm: v9.0.0 or higher (typically installed with Node.js)
- Git: For cloning the repository
- Operating System: Windows 10+, macOS 10.13+, or Linux (Ubuntu 20.04+)
git clone https://github.com/AkiUse306/SyncPoint.git
cd SyncPoint# Install all project dependencies
npm install
# For development with hot reload
npm run dev
# For production build
npm run build# Run tests to verify installation
npm test
# Check application version
npm run versionnpm run build:win
# Creates installer in dist/ directorynpm run build:mac
# Creates DMG file in dist/ directorynpm run build:linux
# Creates AppImage and deb files in dist/ directory# Development mode
npm start
# Production mode
./dist/SyncPoint- Accept the End-User License Agreement
- Choose installation preferences:
- Theme (Light/Dark)
- Default workspace directory
- Cloud integration (optional)
- Create your first workspace
File β Open Directory
or
Press Ctrl+O (Cmd+O on macOS)
- Single Pane: Click directory entries to navigate
- Dual Pane: Use left and right panels for comparison
- Breadcrumb Navigation: Click path components to jump directly
- Copy: Ctrl+C
- Cut: Ctrl+X
- Paste: Ctrl+V
- Delete: Delete key
- Rename: F2
Ctrl+F (Cmd+F on macOS) to open search
Use filters and regex for advanced search
Windows: %APPDATA%\SyncPoint\config.json
macOS: ~/Library/Application Support/SyncPoint/config.json
Linux: ~/.config/SyncPoint/config.json
{
"general": {
"theme": "dark",
"language": "en",
"startupDirectory": "/home/user/Documents"
},
"appearance": {
"showHiddenFiles": false,
"showFileExtensions": true,
"defaultViewMode": "list"
},
"sync": {
"autoSync": true,
"syncInterval": 5000,
"conflictResolution": "ask"
},
"security": {
"enableEncryption": false,
"encryptionAlgorithm": "AES-256"
},
"cloud": {
"provider": "none",
"autoUpload": false
}
}| Setting | Type | Default | Description |
|---|---|---|---|
theme |
string | dark |
UI theme (light/dark) |
autoSync |
boolean | true |
Enable automatic synchronization |
syncInterval |
number | 5000 |
Sync check interval (ms) |
showHiddenFiles |
boolean | false |
Display hidden files |
enableEncryption |
boolean | false |
Enable file encryption |
- Navigate to source directory in left pane
- Navigate to destination in right pane
- Click "Sync" from Tools menu
- Select sync mode (One-way / Bi-directional)
- Review changes and confirm
- Select multiple files (Ctrl+Click)
- Right-click β Batch Rename
- Enter naming pattern (e.g.,
Photo_{number}.jpg) - Preview results and apply
- Press Ctrl+F to open search panel
- Enter search term
- Add filters (file type, date range, size)
- Use regex for complex patterns
- Results update in real-time
- Right-click archive file
- Select "Extract Here" or "Extract To..."
- For creating archives:
- Select files
- Right-click β "Create Archive"
- Choose format and compression level
We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help makes SyncPoint better.
-
Fork the Repository
Click "Fork" button on GitHub -
Clone Your Fork
git clone https://github.com/YOUR_USERNAME/SyncPoint.git cd SyncPoint -
Create a Feature Branch
git checkout -b feature/your-feature-name # or for bug fixes git checkout -b fix/issue-description -
Install Development Dependencies
npm install npm run dev
-
Make Your Changes
- Follow the code style guidelines (see below)
- Write clear, descriptive commit messages
- Add tests for new functionality
-
Run Tests and Linting
npm run lint # Run ESLint npm run format # Format with Prettier npm test # Run test suite npm run test:coverage # Generate coverage report
-
Commit and Push
git add . git commit -m "feat: add new feature description" git push origin feature/your-feature-name
-
Create a Pull Request
- Go to GitHub and create a pull request
- Provide a clear description of your changes
- Link any related issues
- Wait for review and feedback
- Use meaningful variable and function names
- Follow camelCase for variables and functions
- Use PascalCase for classes and components
- Keep functions small and focused
- Add JSDoc comments for public APIs
/**
* Synchronizes files between source and destination directories
* @param source - Source directory path
* @param destination - Destination directory path
* @param options - Sync configuration options
* @returns Promise<SyncResult>
*/
export async function syncDirectories(
source: string,
destination: string,
options: SyncOptions
): Promise<SyncResult> {
// Implementation
}- Use functional components with hooks
- Keep components focused on single responsibility
- Use descriptive prop names
- Add PropTypes or TypeScript interfaces
interface FileListProps {
files: FileInfo[];
onSelect: (file: FileInfo) => void;
isLoading?: boolean;
}
const FileList: React.FC<FileListProps> = ({
files,
onSelect,
isLoading = false,
}) => {
// Component implementation
};feature/description- New featuresfix/issue-name- Bug fixesdocs/topic- Documentation updatesrefactor/component-name- Code refactoringtest/feature-name- Test additions
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, semicolons)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Build, CI/CD, or dependency updates
Example:
feat(sync): implement bi-directional file synchronization
Add support for bi-directional sync with conflict resolution
strategies. Implement file tracking and change detection.
Closes #123
- Write tests for all new features
- Maintain minimum 80% code coverage
- Use Jest for unit tests
- Use React Testing Library for component tests
- Run tests before submitting PR
# Run specific test
npm test -- --testPathPattern=sync
# Run with coverage
npm run test:coverage
# Watch mode during development
npm test -- --watchBefore submitting your PR, ensure:
- Code follows style guidelines
- All tests pass (
npm test) - Linting passes (
npm run lint) - Coverage is maintained or improved
- Documentation is updated if needed
- Commit messages follow convention
- Branch is up-to-date with main
- No merge conflicts
- PR description is clear and complete
When reporting issues:
- Use clear, descriptive titles
- Include step-by-step reproduction
- Provide system information (OS, Node version)
- Include screenshots if applicable
- Attach relevant error logs
Issue Template:
**Description**
Clear description of the issue
**Steps to Reproduce**
1. Step one
2. Step two
3. Step three
**Expected Behavior**
What should happen
**Actual Behavior**
What actually happens
**System Info**
- OS: [e.g., Windows 10]
- Node: [e.g., v18.0.0]
- SyncPoint: [e.g., v1.0.0]
**Screenshots**
[If applicable]We are committed to providing a welcoming and inclusive environment for all contributors and users.
- Use welcoming and inclusive language
- Be respectful of differing opinions and experiences
- Accept constructive criticism gracefully
- Focus on what's best for the community
- Show empathy towards other community members
- Harassment or discrimination
- Insulting or derogatory comments
- Threats or violent language
- Unwelcome advances
- Spam or promotional content
If you experience or witness unacceptable behavior, please report it to the maintainers at conduct@syncpoint.dev.
SyncPoint is released under the MIT License. See the LICENSE file for full details.
MIT License
Copyright (c) 2026 AkiUse306
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
- Documentation: docs/ directory
- FAQ: FAQ.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@syncpoint.dev
Found a bug? Please open an issue on GitHub with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- System information
- Screenshots if applicable
Have an idea? Check existing Issues and Discussions before opening a new feature request.
- Repository: AkiUse306/SyncPoint
- License: MIT
- Node Version: 18.0.0+
- Status: Active Development
We thank all contributors, testers, and users who have helped make SyncPoint better!
Made with β€οΈ by the SyncPoint Community
Last Updated: 2026-01-06 08:41:24 UTC