Skip to main content

Repositories

I will list the important Git repositories and their purpose.

Small, standalone projects usually use main branch directly.

Larger/frequently updated projects uses develop as the main working branch.

Ultimately everything will be merged to main.

RepositoryDescriptionCurrent Working-on BranchRequired Knowledge
crosscopy-client-cliCLI App. oclif (JS version), legacy branch but can be used for debugging. develop is the main branch with Rust-version CLI.developWas TS, now Rust
crosscopy-clientsThis is a monorepo containing all clients. CLI and desktop app will be moved here, since they both rely on the same rust code. Web client may be moved here as it could potentially share the same UI components with the desktop app (if they use the same framework).developRust, TS, Web (React/Vue)
tauri-plugin-clipboardClipboard Monitor Plugin for Tauri. Pretty much done, there are room for improvement.mainTS, Rust, Tauri
crosscopy-devMain client server codebase. A npm monorepo containing all packages to start a client server. crosscopy-core and crosscopy-graphql-schema are submodules of this repo. Currently working on server-rebuild for a big migration.developTS, GraphQL
crosscopy-adminAdmin Console. Used to monitor app stats and modify database using web UIdevelopSveltekit, TS
crosscopy-coreCore Package. Containing main, shared logic of the entire project. feature/core-migrate. Main branch is still develop, but currently under migration.developTS
crosscopy-graphql-schemaGrpahQL Schema and JS package. Define the interface between frontend and backend.developGraphQL, TS
clipboard@crosscopy/clipboard - npm (npmjs.com). JS package for Nodejs to read and monitor clipboard (text+image).mainGolang, Nodejs
crosscopy-client-tauriDesktop app built with Tauri. May merge with crosscopy-client-cli into a client monorepo since they both use Rust.mainTauri, Vue, Svelte, TS
crosscopy-client-webPrevious web client implementation, will need to rewrite.developTS, Nuxt, Vue
crosscopy-logoCrossCopy Logo DesignmainAdobe Illustrator
crosscopy-mq-notification-serviceNotification message queue consumer microservice written in Golang.mainKafka, Golang
crosscopy-mq-notification-service-pythonNotification message queue consumer microservice written in Python. Replaced by the Golang version.mainKafka, Python
notification-proxyA web app https://notification-proxy.crosscopy.io for as a message proxy. Used in crosscopy-doc (static website). Comment and message left in the doc will be saved to Huakun's Notion database through the proxy.mainNuxt, Vue, TS
crosscopy-docPublic Documentation at CrossCopy (static website)mainMarkdown
crosscopy-dev-docInternal Docs at CrossCopy (static website)mainMarkdown

Where to Start

Server

Start by understanding crosscopy-graphql-schema. Then crosscopy-dev. Learn how to set up a dev environment with docker using docker-compose.yml in crosscopy-dev.

Environment include MySQL, Redis, Kafka and zookeeper.

CLI Client

Get familiar with Rust first. Get crosscopy-client-cli develop branch running.

Branch oclif is a working version with the main functionalities implemented.

I am planning to transition to rust. Oclif + Nodejs is easy to write but could be slow, hard to install, unstable on client computer.

If you want to understand how client works, this branch is where you should go because rust is hard to read for beginners and the functionalities are not ready yet.

We can still use oclif to develop and debug the server because TS is easier to write, so we keep the branch there.

Web Client

Read crosscopy-admin to learn sveltekit.

Will be using Nuxt or Sveltekit for main web client. So pick one to learn.

crosscopy-client-web could be a reference for Nuxt, although this repo will be discarded, you can read the code to understand how our web client is designed but the project won't run properly as our server has been updated so much.

Notification Proxy is where you can learn basic Nuxt.

Desktop Client

Need some knowledge of Rust, don't need to be able to write Rust code yet.

HuakunShen/ezup: Easy File Upload to Cloud Storage is an easy Tauri + Sveltekit app to start with.

Understand how tauri-plugin-clipboard works. It's a Tauri plugin used to monitor clipboard update,

Then CrossCopy/crosscopy-client-tauri: Desktop Application Built with Tauri (github.com).

Message Queue

Learn some Golang and Kafka. Then start with crosscopy-mq-notification-service.