Skip to content

Praxis is an open source social network with features for collaborative decision making. Proposals are the main focus and can be used to plan events, update roles and permissions, or even make changes to how the app works.

License

praxis-app/praxis

Praxis

Praxis is an open source social network with features for collaborative decision making. Proposals are the main focus and come with a wide variety of voting models, with consensus as the default. Create a group and set it to no-admin, allowing group members to create proposals and democratically decide on name, settings, roles, or planning of real world events.

While model of consensus is the default, group members will also be able to use regular majority vote, and have the ability to create and assign new roles with various permissions. All of this can be tailored in group settings to meet the specific needs of your community, either by a groups admin, or by proposals as a group evolves over time.

The tech stack includes:

  • Vite
  • NestJS
  • GraphQL
  • TypeORM
  • TypeScript

Praxis is free and open source software, as specified by the GNU General Public License.

Work in Progress

You are entering a construction yard. Things are going to change and break regularly as the project is still getting off the ground. Please bear in mind that Praxis is not yet intended for serious use outside of testing or research purposes. Your feedback is highly welcome.

Core features currently in development:

  • Change group roles, permissions, and settings all via proposals
  • Plan real world events via proposals and voting
  • Federation with ActivityPub

Installation

Ensure that you're using Node v18.17.1 before proceeding.

# Install project dependencies
$ npm install

# Add .env file and edit as needed
$ cp .env.example .env

Running the app

# Start server for development
$ npm run start:dev

# Start client for development
$ npm run start:client

# Start app for production
$ npm run start:prod

Open http://localhost:3000 with your browser to view and interact with the UI.

Docker

Ensure that you have Docker installed to use the following commands.

# Start app in a container
$ docker compose up -d

# Build and restart app after making changes
$ docker compose up -d --build

ESLint and Prettier

# Enable pre-commit hook with Husky
$ npx husky install && npx husky add .husky/pre-commit "npx lint-staged"

GraphQL Code Generator

Praxis takes advantage of code generation based on the current GraphQL schema. The generator should be run after any changes to GraphQL documents, as well as after any changes to the schema.

# Keep generated types and hooks in sync with the current schema
$ npn run gen

Read more about GraphQL Code Generator.

Accessibility

Install the following Chrome extension provided by Deque Systems: axe DevTools - Web Accessibility Testing

Once the extension is installed, open up Chrome DevTools, and navigate to the "axe DevTools" tab. Here you can click the "Scan ALL of my page" button to check for any accessibility issues.

Contributions

Praxis is open to contributions. Please read CONTRIBUTING.md for more details.

Message xtal_nomad on Discord if you'd like to get involved or collaborate.

About

Praxis is an open source social network with features for collaborative decision making. Proposals are the main focus and can be used to plan events, update roles and permissions, or even make changes to how the app works.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Languages