Currently migrating to Notion.
Welcome
This repo is the main portal for documentations and discussions on product, development and community roles. General issues that do not fit in specific repos should also submitted here, for example new feature proposals that require client and server coupling. You can also join us on community maintained Discord.
Some useful resources in this repo:
- Introduction to API
- Introduction to all reposories
- Architecture diagram
- Database documentation and relationship diagram
- Code of conduct
- Wiki on collabration process
Server API
Matters uses GraphQL for the API layer. Read the API documention and test queries and mutations in Apollo playground. A short introduction can be found here.
Architecture
After cloning this repo, you can view the SchemaSpy generated database documentation by opening doc/db/index.html
.
Reposories
The following are major reposories used by matters.town.
Backend
- server: Main repo for Matters server. Written in Typescript, using Apollo Server for GraphQL API.
- query cache: Cache related GraphQL directives and Apollo Server plugins. Used to control and invalidate cache in Matters server.
- image processing: AWS lambda function. Used to resize and transcode images in Matters server.
- queue dashboard: GUI for for Bee Queue and Bull. Used to view queue jobs in Matters server.
Frontend
- web: Main repo for Matters web client. Written in Typescript, built with React, Nextjs and Apollo Client.
- editor: Opinionated WYSWYG editor used at matters.town, built with Quilljs.
- upload client: File upload for GraphQL. Fork of apollo-upload-client with persistence query support.
Shared
- slugify: Good old slugify with CJK charset support.
- docker: Docker images used by Matters Lab.
- slack notification: AWS lambda function for sending notifications to slack for DevOps purpose.
Peer 2 peer clients
Matters is actively finding better ways to deliver content in p2p protocols. Below are some related clients.
- Hypha publication project: experimental projects for peer 2 peer clients to be
interoperable with Matters sever.
- Hypha Desktop: Desktop client based on Election.js and IPFS. Can be downloaded directly and used as a IPFS browser.
- Hypha extension: Browser extension client based on js-ipfs and orbit-db. Can be used for private p2p messaging etc. Heavily under development.
- Beaker Browser: A stable p2p browser supporting
://dat
protocol. There are some discussions and experiments about adapting Matters to Beaker Browser via unwalled.garden protocol and Hyperdrive.
Community projects
- MatREQ: Request articles on certain topic.
- matters-muter: Browser extension to mute articles and comments of given users, support shared blacklist. For Chrome and Firefox, open sourced.
- matters2ipfs: convert matters article to ipfs public gateway that can be accessed within GFW, open sourced.
- matters personal website: personal website mirrored from matters.town, open sourced.
Hall of Fame
We would like to thank everyone on the following list for making our products more secure. You can add yourself by making a pull request.
- huli (GitHub, HitCon)
- CORS misconfiguration
- XSS with image src
- open redirect with iframe
- XSS on login redirect
- catding (GitHub, Matters)
- Missing size or domain check during uploading assets to IPFS
- Aidil Arief
- XSS on login redirect
- Unique Kamboj
- Missing SPF records on domain name