# filesync

> [WorkInProgress - ProofOfConcept] Unidirectional 1-N file syncing with history and local merging

Latest version **2.2.0** (published 2015-10-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install filesync
pnpm add filesync
yarn add filesync
bun add filesync
```

Provides the commands `filesync-relay`, `filesync-server`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.2.0 |
| Published | 2015-10-02 |
| First published | 2015-03-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Known vulnerabilities | 0 (+8 in 2 direct dependencies) |
| Install scripts | yes |
| GitHub stars | 15 |
| Author | Francois-Guillaume Ribreau |
| Maintainers | fgribreau |

## Links

- npm: https://www.npmjs.com/package/filesync
- Repository: https://github.com/FGRibreau/filesync
- Issues: https://github.com/FGRibreau/filesync/issues
- npm.io page: https://npm.io/package/filesync

## Dependencies (10)

- [gaze](https://npm.io/package/gaze.md) ^0.5.1
- [async](https://npm.io/package/async.md) 1.*.*
- [bower](https://npm.io/package/bower.md) ^1.3.12
- [lodash](https://npm.io/package/lodash.md) ^3.3.1
- [express](https://npm.io/package/express.md) ^4.12.2
- [winston](https://npm.io/package/winston.md) 1.*.*
- [socket.io](https://npm.io/package/socket.io.md) ^1.3.5
- [common-env](https://npm.io/package/common-env.md) 4.*.*
- [body-parser](https://npm.io/package/body-parser.md) ^1.12.0
- [socket.io-client](https://npm.io/package/socket.io-client.md) ^1.3.5

## Recent versions

- 2.2.0 (latest) — 2015-10-02
- 2.1.0 — 2015-06-13
- 2.0.1 — 2015-06-13
- 2.0.0 — 2015-03-07

## README

Unidirectional 1-N file syncing with history and *local merging* [![Build Status](https://drone.io/github.com/FGRibreau/filesync/status.png)](https://drone.io/github.com/FGRibreau/filesync/latest)
================================================================

This is a **proof of concept** AND **a work in progress**, don't share the word, yet.

# Motivation

> “We are in 2015 and my students still have to copy what I wrote on a screen while I teach them something. This is a long and tedious process that slow down the lectures.
> 
> Google Document-like tools should NEVER be used for sharing code, we want syntax highlighting and static analysis not copy/pasting code inside an online document each time we make a change.
> 
> Online IDEs are NOT a solution. I have my own finely tuned editor, my students have theirs, we don't want to temporarily trade our workflow comfort for a lecture.
> 
> Both solution are stupid.
> 
> I want a tool that will allow each students to retrieve in real-time my edits while keeping their own local modifications. This tool will work with any editor/IDE because we sync at the file-system level. Each modifications will be display in an history log and would be either merged locally or dropped definitely.”

> — 03/06/2015

## Current status

FileSync was first made during a lecture on AngularJS/Socket.io/NodeJS with IUT Nantes students on 3rd March 2015.

<p align="center">
<img style="width:100%" src="https://cloud.githubusercontent.com/assets/138050/6541935/e75fa8cc-c4e8-11e4-9cf2-a1a04fc05816.gif">
</p>

## Setup

```
npm i filesync -g
filesync-server
filesync-relay /path/to/directory
```

## [Changelog](/CHANGELOG.md)

## Contribute / TODO

See [issues](https://github.com/FGRibreau/filesync/issues) there is still a lot of things to do/improve note that **I will happily merge any pull-requests that solve each of the specified issues**.

## Bonus

Since this tool is primary build for teaching, it will also display the number of students that don't currently have the page on focus using HTML5 Page Visibility API. (But yeah they can always open another browser window, in the end that feature was mainly developed for fun...)

---
_Source: https://npm.io/package/filesync · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
