Open source knowledge base application for Teams

Overview

Opensource knowledge base application for Teams.

Buy Me A Coffee

Introduction

Opus is a place for your team to document who you are, what you do and how you do it. It helps you create and maintain a knowledge base for your teams.

Opus

Motivation

As companies grow, it becomes difficult to manage and communicate the knowledge across different departments, Opus acts as a single source of truth; a go-to place for the employees to get knowledge. It gives enterprises the power to create anything and everything; from meeting notes, project plans, product requirements, technical documentations, orchestrate processes, work-flows and more.

There are spaces for every team, department or major project. Then employees can create, organize and share knowledge inside their relevant teams and keep work organized. There is a structured hierarchy and powerful search engine to find what you need quickly and easily. Apart from that, templates help creating documents without any hassle and there is PDF and Office Docs generation for the ease of sharing.

Features

  • Create manage Wikis (group of knowledge pages)
  • Create nested pages inside wikis
  • Manage wikis and pages by spaces and tags
  • Invite employees by email
  • Powerful ACL to assign different roles and permissions to employees.
  • Slack notifications for the wiki updates
  • Mark wikis and pages as favorite
  • Watch wiki/pages to get notified
  • In-app notifications
  • Discussions using comments
  • Create reusable page templates
  • Search across the knowledge base
  • ..and more

Screenshots

You can find some screenshots of the application in this following link.

Installation

You can use one of the following methods:

Docker

composer create-project ziishaned/opus
cd opus
cp .env.dist .env
docker-compose up
docker-compose exec app php artisan key:generate
docker-compose exec app php artisan migrate
docker run -v "$PWD":/var/www/ opus_app /usr/local/bin/composer install

Localhost

  • Run the below command in your terminal:
    composer create-project ziishaned/opus
  • Create .env using .env.dist and populate the relevant information
  • Install the dependencies
    composer install
  • Open the project directory and run the below
    php artisan migrate
  • Generate an application key
    php artisan key:generate
  • Run the database seeder
    php artisan db:seed

Contributions

License

The license holder is allowed to use the software for free, as long as they don't make money using it. Read more in License

Comments
  • php artisan migrate not working

    php artisan migrate not working

    PHP Parse error:  syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /var/www/vhosts/home.dev/lab.home.dev/artisan on line 31
    
    Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /var/www/vhosts/home.dev/lab.home.dev/artisan on line 31
    
    
    opened by iny 10
  • Layout issue after installation?!

    Layout issue after installation?!

    Hi guys, I am trying to run opus locally on my machine (Windows OS) and I get the following screen. Tried it on a macOS environment, same result.

    screen shot 2017-04-22 at 11 31 30 pm I am using MAMP: PHP version 7.0.13, MySQL 5.6.34

    Am I doing something wrong? Do you have a fix for this issue?

    Thanks!

    opened by frenci 7
  • FatalErrorException in RouteServiceProvider.php line 7

    FatalErrorException in RouteServiceProvider.php line 7

    Getting this error message when trying to run the application:

    FatalErrorException in RouteServiceProvider.php line 7:
    syntax error, unexpected '{', expecting identifier (T_STRING)
    

    The line it's referring to is: use App\Models\{User, Space, Wiki, Team, Page, Role};

    opened by simondahla 7
  • How do i start ?

    How do i start ?

    I saw the Installation but how do I start ? using maven or some command ? And btw the url in Installation should be https://github.com/zeeshanu/opus.git not https://github.com/zeeshanu/wiki.git right ?

    opened by hong-duc 6
  • Offer SSO options

    Offer SSO options

    Motivation

    As companies grow, it becomes difficult to manage and communicate the knowledge across different departments [...]

    That's very very true. But you know what's also true? They have a hard time managing people and their accounts. What that means is that you should definitely offer SSO options. Companies I have worked for are using Google to manage user accounts (check out their developer docs). But it can also be LinkedIn (check out their developer docs) or many other widely adopted platforms.

    enhancement 
    opened by dAnjou 4
  • New users unauthorised to create wikis

    New users unauthorised to create wikis

    Similar to #8 I'm getting Unauthorized when trying to create wikis with newly invited users, it works fine for the account that originally created the team.

    Steps to replicate

    1. Invite new user
    2. Accept invite link email and register
    3. Login and try to create a wiki

    It looks like the main issue is that the following line in the hasPermissions() function returns empty:

    $roles = $this->with('roles')->findOrFail(Auth::user()->id)->roles;

    Maybe the roles are not getting assigned correctly on new users?

    in progress 
    opened by jahvi 4
  • Paths to assets (JS, CSS, images etc.) are incorrect

    Paths to assets (JS, CSS, images etc.) are incorrect

    .env: APP_URL=http://localhost/downloads/opus

    then browsing to http://localhost/downloads/opus/public:

    		<link rel="stylesheet" href="/css/bootstrap.min.css">
    		<link rel="stylesheet" href="/css/app.css">
    		<link rel="stylesheet" href="/css/font-awesome.css">
    		<link rel="stylesheet" href="/plugins/jcrop/Jcrop.min.css">
    		<link rel="stylesheet" href="/css/toastr.min.css">
    		<link href="/plugins/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css" rel="stylesheet">
    		<link href="/plugins/vakata-jstree/dist/themes/default/style.css" rel="stylesheet">
    		<link href="/plugins/atjs/jquery.atwho.min.css" rel="stylesheet">
    		<link href="/plugins/select2/select2.min.css" rel="stylesheet">
    
    /css
    /plugins
    

    point to root instead of public folder.

    opened by nekromoff 3
  • Problem installing in docker container

    Problem installing in docker container

    I'm trying to make a Dockerfile for install it, i'm getting this error now:

    Removing intermediate container 9981adb8e100
    Step 12 : RUN composer install
     ---> Running in b878cfa19a0c
    Do not run Composer as root/super user! See https://getcomposer.org/root for details
    Loading composer repositories with package information
    Installing dependencies (including require-dev) from lock file
    Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Installation request for facebook/webdriver 1.4.0 -> satisfiable by facebook/webdriver[1.4.0].
        - facebook/webdriver 1.4.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
      Problem 2
        - facebook/webdriver 1.4.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
        - laravel/dusk v1.0.14 requires facebook/webdriver ~1.0 -> satisfiable by facebook/webdriver[1.4.0].
        - Installation request for laravel/dusk v1.0.14 -> satisfiable by laravel/dusk[v1.0.14].
    
      To enable extensions, verify that they are enabled in your .ini files:
        - 
        - /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
      You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
    ERROR: Service 'master' failed to build: The command '/bin/sh -c composer install' returned a non-zero code: 2
    
    

    This is my Dockerfile:

    FROM php:7-fpm
    
    RUN apt-get update > /dev/null \
        && apt-get install -yyq \
        git \
        curl \
        unzip \
        > /dev/null \
        && docker-php-ext-install \
        pdo_mysql \
        iconv \
        pdo \
        > /dev/null \
        && docker-php-ext-enable \
        pdo_mysql \
        iconv \
        pdo \
        > /dev/null \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    
    RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    RUN php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    RUN php composer-setup.php
    RUN php -r "unlink('composer-setup.php');"
    
    RUN mv composer.phar /usr/local/bin/composer
    
    WORKDIR ~
    RUN git clone -q https://github.com/zeeshanu/opus.git opus
    WORKDIR opus
    ADD .env /opus/.env
    # TODO: Make posible change branches before install
    #active_version=$(git status | head -1)
    #if [ "$active_version" != "HEAD detached at $version" ]; then
    #    echo "Switching to version $version ..."
    #    git fetch -q
    #    git checkout -q $version
    #fi
    
    RUN composer install
    
    opened by SalahAdDin 3
  • How to serve?

    How to serve?

    I commented on the 'How do I start?' issue (https://github.com/zeeshanu/opus/issues/1#issuecomment-287646648) but it's closed so I'm not sure anyone will see it!

    Just curious, I've built the app as per instructions, but I'm not sure how to serve it? I tried php artisan serve --port=80, serving it behind nginx... To no avail. Can you let me know what I'm missing please?

    Thanks!

    opened by absolutejam 3
  • New users have no group and permissions attached

    New users have no group and permissions attached

    • Create a new team/user
    • Login as newly created user
    • Click on «Create Wiki» -> Unauthorized
    • App\Models\User::first()->groups is empty, it looks like there are no groups attached by default.
    opened by tobias-kuendig 3
  •  php artisan db:seed fails

    php artisan db:seed fails

    Hi,

    I'm having trouble executing "php artisan db:seed". I followed all the instruction and works well, however, when I executed db:seed, I got this error "Seeding: Database\Seeds\Components\Role\RolesTableSeeder

    [ErrorException] count(): Parameter must be an array or an object that implements Countable " You can refer also from attached image below. I have PHP version 7.2.4 and Mysql version 5.1.73.

    Thank you and I hope i can hear a response coming from you soon. error

    opened by michaelhonasan9 2
  • Docker Instructions

    Docker Instructions

    I'm confident with Xampp and some others however I'm having a bit of trouble with the Docker instructions. This first part makes sense.

    composer create-project ziishaned/opus
    cd opus
    cp .env.dist .env
    

    This is where I get confused - (I have Docker on my machine)

    docker-compose up
    docker-compose exec app php artisan key:generate
    docker-compose exec app php artisan migrate
    docker run -v "$PWD":/var/www/ opus_app /usr/local/bin/composer install
    

    Side Notes: I'm using a GitHub repo and VSCode

    opened by timhow38 0
  • Any chance to upgrade to Laravel 6?

    Any chance to upgrade to Laravel 6?

    Hello! I'm using Opus and really enjoy it. Anyway it's based on Laravel 5.4 that doesn't receive security fixes since Jan 2018. Even the closest LTS (5.5) has stopped receiving fixes on Aug 2020.

    Upgrading to Laravel 6 will ensure support till Sept 2022.

    The upgrade of the framework it self would be quite easy, there are only two packages that are a little bit critical: fenos/notifynder it's stopped at Laravel 5 and baum/baum where the latest is an alpha release (2.0.0-alpha1).

    Thanks.

    opened by LucianoVandi 1
  • Whoops, looks like something went wrong.

    Whoops, looks like something went wrong.

    Passing glue string after array is deprecated. Swap the parameters

    in SlugService.php line 137

    at HandleExceptions->handleError() at join()in SlugService.php line 137 at SlugService->getSlugSource()in SlugService.php line 81 at SlugService->buildSlug()in SlugService.php line 41 at SlugService->slug()in SluggableObserver.php line 57 at SluggableObserver->generateSlug()in SluggableObserver.php line 43 at SluggableObserver->saving() at call_user_func_array()in Dispatcher.php line 367 at Dispatcher->Illuminate\Events{closure}()in Dispatcher.php line 199 at Dispatcher->dispatch()in Dispatcher.php line 159 at Dispatcher->until()in HasEvents.php line 148 at Model->fireModelEvent()in Model.php line 506 at Model->save()in Builder.php line 734 at Builder->Illuminate\Database\Eloquent{closure}()in helpers.php line 964 at tap()in Builder.php line 735 at Builder->create()in Model.php line 1374 at Model->__call()in User.php line 248 at User->createUser()in TeamController.php line 246 at TeamController->store() at call_user_func_array()in Controller.php line 55 at Controller->callAction()in ControllerDispatcher.php line 44 at ControllerDispatcher->dispatch()in Route.php line 203 at Route->runController()in Route.php line 160 at Route->run()in Router.php line 572 at Router->Illuminate\Routing{closure}()in Pipeline.php line 30 at Pipeline->Illuminate\Routing{closure}()in RedirectIfAuthenticated.php line 26 at RedirectIfAuthenticated->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in SubstituteBindings.php line 41 at SubstituteBindings->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in StartSession.php line 64 at StartSession->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in EncryptCookies.php line 59 at EncryptCookies->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in Pipeline.php line 102 at Pipeline->then()in Router.php line 574 at Router->runRouteWithinStack()in Router.php line 533 at Router->dispatchToRoute()in Router.php line 511 at Router->dispatch()in Kernel.php line 176 at Kernel->Illuminate\Foundation\Http{closure}()in Pipeline.php line 30 at Pipeline->Illuminate\Routing{closure}()in CheckForMaintenanceMode.php line 46 at CheckForMaintenanceMode->handle()in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}()in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}()in Pipeline.php line 102 at Pipeline->then()in Kernel.php line 151 at Kernel->sendRequestThroughRouter()in Kernel.php line 116 at Kernel->handle()in index.php line 53

    image

    opened by raulrr1986 1
  • Whoops, looks like somethings went wrong

    Whoops, looks like somethings went wrong

    good friends as we have been reviewing this application to implement everything has been fine with user registrations and creations but at the time of us creating a wiki shows us this error

    (1/1) ErrorExceptioncompact(): Undefined variable: pages

    in WikiController.php line 141 at HandleExceptions->handleError(8, 'compact(): Undefined variable: pages', '/var/www/opus/app/Http/Controllers/WikiController.php', 141, array('team' => object(Team), 'space' => object(Space), 'wiki' => object(Wiki), 'isWikiInReadList' => null, 'isUserWatchWiki' => null, 'wikiTags' => object(Collection), 'isUserLikeWiki' => false)) at compact('pages', 'wiki', 'team', 'space', 'isUserLikeWiki', 'wikiTags', 'isUserWatchWiki', 'isWikiInReadList')in WikiController.php line 141 at WikiController->show(object(Team), object(Space), object(Wiki)) at call_user_func_array(array(object(WikiController), 'show'), array('team_slug' => object(Team), 'space_slug' => object(Space), 'wiki_slug' => object(Wiki)))in Controller.php line 55 at Controller->callAction('show', array('team_slug' => object(Team), 'space_slug' => object(Space), 'wiki_slug' => object(Wiki)))in ControllerDispatcher.php line 44 at ControllerDispatcher->dispatch(object(Route), object(WikiController), 'show')in Route.php line 203 at Route->runController()in Route.php line 160 at Route->run()in Router.php line 572 at Router->Illuminate\Routing{closure}(object(Request))in Pipeline.php line 30 at Pipeline->Illuminate\Routing{closure}(object(Request))in SubstituteBindings.php line 41 at SubstituteBindings->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in Authenticate.php line 43 at Authenticate->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in StartSession.php line 64 at StartSession->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in Pipeline.php line 102 at Pipeline->then(object(Closure))in Router.php line 574 at Router->runRouteWithinStack(object(Route), object(Request))in Router.php line 533 at Router->dispatchToRoute(object(Request))in Router.php line 511 at Router->dispatch(object(Request))in Kernel.php line 176 at Kernel->Illuminate\Foundation\Http{closure}(object(Request))in Pipeline.php line 30 at Pipeline->Illuminate\Routing{closure}(object(Request))in CheckForMaintenanceMode.php line 46 at CheckForMaintenanceMode->handle(object(Request), object(Closure))in Pipeline.php line 148 at Pipeline->Illuminate\Pipeline{closure}(object(Request))in Pipeline.php line 53 at Pipeline->Illuminate\Routing{closure}(object(Request))in Pipeline.php line 102 at Pipeline->then(object(Closure))in Kernel.php line 151 at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php line 116 at Kernel->handle(object(Request))in index.php line 53

    opened by dblancow12 0
Releases(v1.3.5)
Owner
Zeeshan Ahmad
Engineering at Tradeling. Full Stack Developer. Tech guy with an entrepreneurial spirit and knack for getting things done.
Zeeshan Ahmad
GitScrum is a Project Management Tool, developed to help entrepreneurs, freelancers, managers, and teams Skyrocket their Productivity with the Agile methodology and Gamification.

GitScrum is a Project Management Tool, developed to help entrepreneurs, freelancers, managers, and teams Skyrocket their Productivity with the Agile methodology and Gamification.

GitScrum 2.8k Jan 6, 2023
Personal Knowledge Management. Use branch "minimal change" to deploy as laravel package.

Knowfox Knowfox is my Personal Knowledge Management system. Having been an keen Evernote user since 2012, I finally got around to taking my precious n

null 180 Dec 28, 2022
Examination tasks to test backend knowledge (for junior level)

Task 1 The website of one of our old clients was hacked. After hacking, a strange red bar appeared on the site at the bottom of the page (https://imgu

dev.family 4 Apr 29, 2022
Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms 1.1k Dec 22, 2022
Mibew Messenger - open-source live support application written in PHP and MySQL

Mibew Messenger is an open-source live support application written in PHP and MySQL. It enables one-on-one chat assistance in real-time directly from your website.

Mibew Messenger 443 Dec 13, 2022
EspoCRM open source CRM application

EspoCRM is an Open Source CRM (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.

EspoCRM - Open Source CRM 1k Dec 29, 2022
OroCRM is an open source Client Relationship Management (CRM) application

OroCRM is an open source Client Relationship Management (CRM) application that allows to create a 360° view of your customers across multiple channels, organize the sales pipeline, manage account and contact information, communicate with customers, run marketing campaigns and track campaign performance.

Oro, Inc. 611 Jan 3, 2023
phpIPAM is an open-source web IP address management application.

phpIPAM is an open-source web IP address management application. Its goal is to provide light and simple IP address management application. It is ajax-based using jQuery libraries, it uses php scripts and javascript and some HTML5/CSS3 features, so some modern browser is preferred to be able to display javascript quickly and correctly.

Miha Petkovsek 1.8k Dec 31, 2022
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework.

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

opensourcepos 2.7k Jan 2, 2023
OpenEMR is a Free and Open Source electronic health records and medical practice management application

OpenEMR is a Free and Open Source electronic health records and medical practice management application. It features fully integrated electronic health records, practice management, scheduling, electronic billing, internationalization, free support, a vibrant community, and a whole lot more. It runs on Windows, Linux, Mac OS X, and many other platforms.

OpenEMR 2.1k Jan 9, 2023
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

Artha Nugraha Jonar 34 Sep 17, 2022
Simple Laravel Invoice Generator Sling — open-source web application that helps you create invoices and track income.

Simple Laravel Invoice Generator Sling — open-source web application that helps you create invoices and track income. Table of Contents About

Ray Icemont 4 Nov 22, 2022
DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location

DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location. DomainMOD also includes a Data Warehouse framework that allows you to import your web server data so that you can view, export, and report on your live data.

DomainMOD 349 Jan 8, 2023
A good, non-specialized Laravel base site for faster app development

Larastrap This is a non-specialized Laravel base site containing generalized components for faster development of nearly any type of site. It includes

Memphis PHP 2 Jul 31, 2022
The forum is a base for our Youtube tutorial series on "how to build a forum"

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

AngelJay 15 Oct 11, 2022
📛 An open source status page system for everyone.

Cachet is a beautiful and powerful open source status page system. Overview List your service components Report incidents Customise the look of your s

Cachet 13k Jan 3, 2023
Create Your Own Broadcast Network With AVideo Platform Open-Source. OAVP OVP

Audio Video Platform AVideo is a term that means absolutely nothing, or anything video. Since it doesn't mean anything the brand simply is identifiabl

World Wide Broadcast Network 1.7k Jan 8, 2023
classroombookings - open source room booking system for schools.

This is a web-based room booking system for schools and is designed to be as easy to use as possible. Set up your bookable rooms, day schedule and timetable for the year. Add user accounts, and allow them to make and manage bookings from anywhere.

Craig A Rodway 127 Nov 20, 2022
Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.

Introduction Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates. Web Applica

Bytefury 6.7k Jan 1, 2023