{"id":26022952,"url":"https://github.com/agrison/sermonis","last_synced_at":"2026-04-21T01:01:34.801Z","repository":{"id":8481867,"uuid":"10085111","full_name":"agrison/sermonis","owner":"agrison","description":"sermonis","archived":false,"fork":false,"pushed_at":"2013-05-15T18:43:44.000Z","size":344,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-06T10:43:03.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agrison.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-15T18:21:54.000Z","updated_at":"2013-12-15T12:39:06.000Z","dependencies_parsed_at":"2022-09-16T12:24:03.989Z","dependency_job_id":null,"html_url":"https://github.com/agrison/sermonis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/agrison/sermonis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrison%2Fsermonis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrison%2Fsermonis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrison%2Fsermonis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrison%2Fsermonis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agrison","download_url":"https://codeload.github.com/agrison/sermonis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrison%2Fsermonis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32072323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-06T10:37:35.385Z","updated_at":"2026-04-21T01:01:34.704Z","avatar_url":"https://github.com/agrison.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"sermonis\r\n========\r\n\r\nSermonis started as an experimentation using mongoDB, atmosphere and Spring-Data and finished with a working web chat application using these technologies.\r\n\r\nThe Sermonis application was born. Its goal is to provide users an easy way to deploy a simple web application that let users talk with each other without \r\nthe need to install an application like Skype.\r\n\r\nSermonis supports Markdown and password protected rooms. It‘s not aimed to grow bigger than that for the moment.\r\n\r\n\r\n### First run\r\n\r\nIn order to test Sermonis on your local machine all you need is Java, Maven and mongoDB. If you want to test rapidly just type the following command:\r\n\r\nInstall a mongoDB on your machine, by downloading it here, then open a shell and type the following to run it:\r\n\r\n    \r\n    $ cd mongodb/bin\r\n    $ mkdir data\r\n    $ mongod --dbpath data\r\n    \r\n\r\nDownload Sermonis and run it like this:\r\n\r\n    \r\n    $ cd sermonis\r\n    $ mvn compile exec:java -Dexec.mainClass=me.grison.sermonis.SermonisInit jetty:run\r\n    \r\n\r\nDuring the execution of the command you will be asked for an administrator password. This very password will be stored in a file called `sermonis.properties` in an encrypted way (md5 hash of an AES password encrypted with a secret token generated previously).\r\n\r\nHere is a sample of `sermonis.properties` file\r\n\r\n    #                                          _     \r\n    #    ________  _________ ___  ____  ____  (_)____\r\n    #   / ___/ _ \\/ ___/ __ `__ \\/ __ \\/ __ \\/ / ___/\r\n    #  (__  )  __/ /  / / / / / / /_/ / / / / (__  ) \r\n    # /____/\\___/_/  /_/ /_/ /_/\\____/_/ /_/_/____/  \r\n    #                                               \r\n    \r\n    # Sermonis property file generated on Mon May 13 10:11:44 CEST 2013\r\n    \r\n    # Sermonis secret token used to encrypt password and browser request information into cookies\r\n    # to secure access to password protected room and admin interface\r\n    secretKey=0b388F1ab18EA5-7426E2-2e2C-8f1781683f-68Da1b1eA2C8-b5BD161Fb2f4140D06\r\n    \r\n    # MD5 hash of the admin password AES encrypted with the above secret token\r\n    adminPassword=E591B207FA96239F368382E45BC55816\r\n\r\n\r\nand a sample of the execution of the previous mvn command.\r\n\r\n    $ mvn compile exec:java -Dexec.mainClass=me.grison.sermonis.SermonisInit jetty:run\r\n    [INFO] Scanning for projects...\r\n    [INFO] ------------------------------------------------------------------------\r\n    [INFO] Building sermonis Maven Webapp 0.0.1-SNAPSHOT\r\n    [INFO] ------------------------------------------------------------------------\r\n    \t                                          _     \r\n    \t    ________  _________ ___  ____  ____  (_)____\r\n    \t   / ___/ _ \\/ ___/ __ `__ \\/ __ \\/ __ \\/ / ___/\r\n    \t  (__  )  __/ /  / / / / / / /_/ / / / / (__  ) \r\n    \t /____/\\___/_/  /_/ /_/ /_/\\____/_/ /_/_/____/  \r\n    \t                                               \r\n    \r\n    You're about to generate a secret key and admin password for sermonis.\r\n    \r\n    Generating the secret key...\r\n    Please provide an admin password: \r\n    foobar\r\n    Updating sermonis.properties...\r\n    All done!\r\n    [INFO] \r\n    [INFO] \u003e\u003e\u003e jetty-maven-plugin:8.1.0.v20120127:run (default-cli) @ sermonis \u003e\u003e\u003e\r\n    [INFO] Configuring Jetty for project: sermonis Maven Webapp\r\n    ...\r\n    [INFO] Started Jetty Server\r\n    [INFO] Starting scanner at interval of 1 seconds.\r\n\r\n### Play with it\r\n\r\nJust hit http://localhost:9001 and you will be redirected to a newly created room asking you for your username. \r\nJust share that same URL to someone else so that he can join you, and finally have some chat with your friend.\r\n\r\n\r\n### About the name\r\n\r\nsermonis means (sort-of) discussion in Latin, since a corpus of chat messages is seen as a discussion, that name make sense :-).\r\n\r\n\r\n## Technical\r\n\r\n### Technical Stack\r\n\r\nSermonis was started as an experimentation around multiple technologies, which are listed below:\r\n\r\n* Atmosphere\r\n* Spring with Spring-Data, Spring-Data-Mongo and Spring-Atmosphere\r\n* MongoDB\r\n* AngularJS\r\n* Websockets\r\n\r\nI‘m using Websockets to provide realtime-like chat within browser, using a library called Atmosphere.\r\nThe RT stuff is bound to `.../async/...` URLs and is supported by recent web-browsers. You will note that not every Java application container supports them. If you‘re using Tomcat you will need Tomcat7. Jetty and Glassfish supports them too.\r\n\r\n### MongoDB\r\n\r\nIn Sermonis MongoDB is used only to save chat rooms configuration (password, administrator) and chat messages within them.\r\nUsed with Spring-Data and it‘s binding specific to MongoDB it is really super-easy to use.\r\n\r\n### AngularJS \u0026 Bootstrap\r\n\r\nI‘ve used AngularJS to render the messages in the chat rooms, with some jQuery touch where I‘m not enough skilled with Angular.\r\nThe skin is using the well-known-already-seen-everywhere Bootstrap CSS framework.\r\n\r\n### Cookies\r\n\r\nSermonis use cookies to save user preferences (name, color, markdown, password (encrypted)). \r\nCookies are related to one and only one room. This means that a user can have different name, color and password for every room he has access.\r\n\r\n### Use cases\r\n\r\nLet‘s say the url of your deployed version of Sermonis is http://localhost/sermonis/.\r\n\r\n#### Creating a room\r\nJust hit the index page of the application at http://localhost/sermonis/, you will be redirected to a newly created room.\r\n\r\n#### Creating a password protected room\r\nJust hit the index page of the application with a query parameter withPassword at http://localhost/sermonis/?withPassword, \r\nyou will be redirected to a page asking you the password with which the room should be protected, along with an administrator password. \r\nWhen you click on Create the room will be created and you will be redirected on it directly.\r\n\r\n#### Joining a room\r\nJust hit the URL someone shared you.\r\n\r\n#### Joining a password protected room\r\nJust hit the URL someone shared you. You will be asked for a password, providing it and clicking Join will redirect you to the chat room. \r\nDepending on the room configuration, you may be able to see the chat messages history.\r\n\r\n#### Choosing your user color\r\nClick on your username, and pick a color from the color picker. The color is stored in a cookie.\r\n\r\n#### Messages\r\nTo send a message in the room just type it in the input at the bottom of the page and press Enter. \r\nSermonis supports Markdown by relying on the PageDown Markdown JS Library.\r\n\r\nThe IRC `/me` command is supported, and a shortcut for posting images is available with `img:url` instead of the longer markdown syntax `![alt](url)`.\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrison%2Fsermonis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagrison%2Fsermonis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrison%2Fsermonis/lists"}