1
Fork 0
mirror of https://github.com/bettiah/transform.git synced 2025-12-07 13:51:12 +00:00
[Pull Mirror] Transform is a matrix homeserver built using Typescript and Redis.
  • TypeScript 100%
Find a file
Abhishek Kumar 1c4ca456e5 sync works too
2018-06-30 13:31:19 +01:00
.vscode added explicit joint table between users \& rooms to account for time user entered the room 2018-06-16 19:35:44 +08:00
src invite & accept should work 2018-06-28 19:20:51 +08:00
.gitignore createRoom fixes 2018-06-13 14:52:18 +08:00
config.json move configuration from config.json to .env 2018-06-25 23:20:53 +08:00
dot_env move configuration from config.json to .env 2018-06-25 23:20:53 +08:00
LICENSE Apache LICENSE 2018-06-26 00:55:49 +08:00
package.json add readme, pick a provisional name 2018-06-26 00:28:35 +08:00
readme.md sync works too 2018-06-30 13:31:19 +01:00
tsconfig.json added explicit joint table between users \& rooms to account for time user entered the room 2018-06-16 19:35:44 +08:00

Transform

Transform is a matrix homeserver built using Typescript and Redis. It is not fully functional yet.

Status

Register, Login, CreateRoom, Invite, Join & Sync seem to be functional with riot web client. But quite a lot of functionality is missing and the software is definitely not ready for deployment in a public facing role.

Design

A lot of the code is auto-generated from the excellent swagger specs for the client-server api.

Redis streams (currently available in 5.0 rc) are used to store the room timelines. Sqlite (or Postrgres) is used to store relational data.

Contributing

It is early days yet. However, Typescript has enabled safe & rapid progress. Redis streams too seem to have a very well thought out api and the whole thing has been a fun experience so far.

Contributions are very welcome.

Api endpoints can be found within client-server/ folder. It should be possible to pick an endpoint and work on in until it works to your satisafaction in a client of choice. Please file an issue if you choose an andpoint to work on.

In addition to the server endpoints, a REST api consumer is also available in client-sever/cli.ts.

Getting started

  • The latest Node 10 is used for development, but 8.0+ outght to work

  • Redis 5.0 rc needs to be runnning: brew install redis --HEAD

  • Clone & yarn to install dependencies

  • cp dot_env .env

  • yarn dev to start the server

  • Riot ui can be used to interact with the server. I have found it easiest to use a release tarball from https://github.com/vector-im/riot-web/releases and run it using serve -l tcp://127.0.0.1:1233 or equivalnt mechanism.