Enterprise Modular SAAS Framework, Design from the growndup to grow vertically.

Related tags

Miscellaneous kwerio
Overview

Logo

Kwerio

Enterprise Modular SAAS Framework, Design from the growndup to grow vertically.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Default Login Module Screen Default Home Module Screen Global Menu List of available users Create new user Edit User Details Delete selected user List of User Abilities List of available groups Create new Group Edit Group Details Delete Selected Groups

(back to top)

Built With

(back to top)

Getting Started

Prerequisites

You need to have docker installed in order to start developing using kwerio.

Installation

  1. Run kwerio
$ cp .env.example .env
$ make
  1. Migrate the system database
$ make app.exec
(app) $ php artisan migrate --path database/migrations/system --database system
(app) $ php artisan migrate --database system
(app) $ php artisan db:seed --database system
(app) $ php artisan module:enable Home --group Home
(app) $ exit
$ make app.hot

(back to top)

Usage

Host Configuration

  1. Use dnsmasq to be able to use dynamic subdomains, which is required for using kwerio to develop modules for multiple tenants.

If you are only going to develop modules for a single tenant, then you can skip dnsmasq configuration, and simply use /etc/hosts.

# file: /etc/dnsmasq.conf
# ------------------------------------------------ [ Custom DNS Servers ] -- #
server=1.1.1.1
server=1.0.0.1

# --------------------------------------------------------- [ .test TLD ] -- #
address=/.test/127.0.0.1

# file: /etc/resolv.conf
nameserver 127.0.0.1
$ sudo systemctl restart dnsmasq.service
$ sudo chattr +i /etc/resolv.conf
  1. use mkcert or openssl to generate a wildcard certificate.
$ cd ~/.local/share/mkcert
$ mkcert *.kwerio.test
  1. use the following httpd configuration for reverse proxy and wstunnel
">
# file: httpd.conf
# Modules: mod_rewrite
# --------------------------------------- [ Host: _wildcard.kwerio.test ] -- #
<VirtualHost *:80>
    ServerName kwerio.test
    ServerAlias *.kwerio.test

    RewritEengine On
    RewriteCond %{HTTP_HOST} ^(.+)\.kwerio\.test$
    RewriteRule ^(.*)$ https://%1.kwerio.test$1 [R=permanent,L]
    RewriteCond %{SERVER_NAME} =*.kwerio.test
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
VirtualHost>

# file: httpd-ssl.conf
# Modules: mod_rewrite, mod_headers, mod_ssl
# --------------------------------------- [ Host: _wildcard.kwerio.test ] -- #
<VirtualHost *:443>
    ServerAlias *.kwerio.test

    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteCond %{HTTP:Connection} =upgrade [NC]
    RewriteRule (.*) ws://172.20.0.10:80$1 [P,L]

    ProxyPreserveHost On
    ProxyPass / http://172.20.0.10/
    ProxyPassReverse / http://172.20.10/

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}

    SSLCertificateFile /etc/ssl/_wildcard.kwerio.test.crt
    SSLCertificateKeyFile /etc/ssl/_wildcard.kwerio.test.key
VirtualHost>

[ Optional ] If you are using httpd docker image, then append the previous configuration to files httpd.conf and httpd-ssl.conf and use the following docker-compose configuration

don't forget to change /home/oussama/.local/share/mkcert with the path to where you installed your certificates.

version: "3.9"

services:

  apache2:
    image: httpd:2.4.51-alpine3.14
    restart: unless-stopped
    networks:
      kwerio:
        ipv4_address: 172.20.0.100
    tty: true
    stdin_open: true
    ports:
      - 127.0.0.1:80:80
      - 127.0.0.1:443:433
    volumes:
      - ./httpd.conf:/usr/local/apache2/conf/httpd.conf
      - ./httpd-ssl.conf:/usr/local/apache2/conf/extra/httpd-ssl.conf
      - /home/oussama/.local/share/mkcert/_wildcard.kwerio.test.pem:/etc/ssl/_wildcard.kwerio.test.crt
      - /home/oussama/.local/share/mkcert/_wildcard.kwerio.test-key.pem:/etc/ssl/_wildcard.kwerio.test.key

networks:
  kwerio:
    external: true

Run the container

$ docker-compose up \
    --build \
    --abort-on-container-exit \
    --remove-orphans

Running kwerio

After you configure your host to run kwerio,

The first time you access kwerio you will be redirected to the login page, use the login email and password defined in .env file to enter kwerio.

[email protected]
ROOT_USER_PASSWORD=ohdaTh0jou5zei2Ga4neeY9Hichae3vo

$ https://ohphief6.kwerio.test

If you enabled the Home module during installation, then you will be able to see the dashboard, otherwise you will receive a 403 because you don't have access to any module.

(back to top)

Roadmap

Checklist for v1.0

  • User Managements.
  • Group / User permissions and abilities.
  • Tenants can share or have unique access to modules.
  • Tenants can host there own database.
  • Add api support.
  • Tenants can use there own domain.
  • Chat with other members (work together).
  • Have video conferences for work.
  • Latest activities as notification by all other members.
  • Online Visibility, time spent working.

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.md for more information.

(back to top)

Contact

Oussama Elgoumri - Telegram - @Euvoor

Project Link: https://github.com/kwerio/kwerio

(back to top)

Acknowledgments

(back to top)

You might also like...
Hoa is a modular, extensible and structured set of PHP libraries

Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds. Hoa\Ust

Simple WHOIS script with beautiful design.
Simple WHOIS script with beautiful design.

Simple PHP Whois It is ideal in terms of design and has easy operation. / Tasarım açısından idealdir ve kullanımı kolaydır. It has a simple interface.

Repo do vídeo do youtube de Design Patterns - Decorator
Repo do vídeo do youtube de Design Patterns - Decorator

DesignPatternsPHP-Decorator Repo do vídeo do Youtube de Design Patterns - Decorator Link do vídeo Decorator em PHP 8 Imagem de exemplo Link do cadastr

PHP_Depend is an adaptation of the established Java development tool JDepend. This tool shows you the quality of your design in terms of extensibility, reusability and maintainability.

PHP Depend Documentation PHP Depend for enterprise Available as part of the Tidelift Subscription. The maintainers of PHP Depend and thousands of othe

the examples of head first object oriented analysis & design - in PHP

Head First object oriented analysis & design in (PHP) after cloning the repository, you have to install the project's dependancies by running the foll

Learning design patterns by implementing them in various programming languages.

design-patterns Learning design patterns by implementing them in various programming languages. Creational design patterns Creational design patterns

Sample code for several design patterns in PHP 8

DesignPatternsPHP Read the Docs of DesignPatternsPHP or Download as PDF/Epub This is a collection of known design patterns and some sample codes on ho

Design Pattern Examples in PHP

Design Patterns in PHP This repository is part of the Refactoring.Guru project. It contains PHP examples for all classic GoF design patterns. Each pat

Detection of design patterns in PHP code
Detection of design patterns in PHP code

Pattern Detector for PHP Detects design pattern in your code

Owner
null
Fully covered with tests, documented by Swagger and dockerized API based on enterprise-level framework with optional queue worker.

symfony-api Fully covered with tests, documented by Swagger and dockerized API based on enterprise-level framework with optional queue worker. ⚙️ Depl

Oleksii Velychko 1 Nov 20, 2022
CMS based on Phalcon PHP Framework with modular structure

Yona CMS Yona CMS - open source content management system (CMS). Written in Phalcon PHP Framework (version 3.x supported) Has a convenient modular str

Alexander Torosh 369 Dec 27, 2022
SuiteCRM is the award-winning open-source, enterprise-ready Customer Relationship Management (CRM) software application.

SuiteCRM is the award-winning open-source, enterprise-ready Customer Relationship Management (CRM) software application.

SalesAgility 111 Dec 21, 2022
OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures all the essential functionalities required for any enterprise.

OrangeHRM Open Source Application OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures all the essential functionalities

OrangeHRM 452 Jan 4, 2023
Enterprise isEven API Client

zonuexe\isEvenApi This package is a modern, high performance, high modularity and strongly static typed enterprise quality API Client of isEven API fo

USAMI Kenta 3 Aug 26, 2021
Osclass Enterprise allows you to quickly build your own classifieds site for free.

Osclass Enterprise Osclass Enterprise is a fork of the Osclass v3.8.0 repository, containing many fixes and improvements (check the CHANGELOG). Releas

null 6 Dec 20, 2022
An open source tool that lets you create a SaaS website from docker images in 10 minutes.

简体中文 Screenshots for members ( who subscribe the plan ) for admin ⚠️ This document was translated into English by deepl and can be improved by PR An o

Easy 669 Jan 5, 2023
Agora Open source SaaS billing system for software companies

About Agora Invocing Billing and subscription management for SaaS & other software businesses. Handling signups, provisioning, billing and support Ago

Ladybird Web Solution 158 Dec 17, 2022
Laravel Plans is a package for SaaS apps that need management over plans, features, subscriptions, events for plans or limited, countable features.

Laravel Plans Laravel Plans is a package for SaaS apps that need management over plans, features, subscriptions, events for plans or limited, countabl

ángel 2 Oct 2, 2022
Pagekit is a modular and lightweight CMS built with Symfony components and Vue.js.

Pagekit Pagekit is a modular and lightweight CMS built with Symfony components and Vue.js. Homepage - Learn more about Pagekit Documentation - User an

Pagekit 5.5k Dec 30, 2022