{"id":16472312,"url":"https://github.com/mjamesd/jubilant-robot","last_synced_at":"2026-04-12T03:37:18.420Z","repository":{"id":44813498,"uuid":"444328559","full_name":"mjamesd/jubilant-robot","owner":"mjamesd","description":"A blog app with an MVC content management system using Express.js","archived":false,"fork":false,"pushed_at":"2024-09-02T22:02:44.000Z","size":327,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T10:15:09.172Z","etag":null,"topics":["css3","dotenv","express","express-session","handlebars","html5","jquery","materialize","mvc","mysql","node","sequelize"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mjamesd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-04T07:40:06.000Z","updated_at":"2024-09-02T22:02:48.000Z","dependencies_parsed_at":"2025-01-10T23:41:28.158Z","dependency_job_id":"ad20e0fc-f3af-407c-8c7c-3cba4de0e3d0","html_url":"https://github.com/mjamesd/jubilant-robot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mjamesd/jubilant-robot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjamesd%2Fjubilant-robot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjamesd%2Fjubilant-robot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjamesd%2Fjubilant-robot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjamesd%2Fjubilant-robot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mjamesd","download_url":"https://codeload.github.com/mjamesd/jubilant-robot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjamesd%2Fjubilant-robot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31703501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"online","status_checked_at":"2026-04-12T02:00:06.763Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["css3","dotenv","express","express-session","handlebars","html5","jquery","materialize","mvc","mysql","node","sequelize"],"created_at":"2024-10-11T12:16:47.734Z","updated_at":"2026-04-12T03:37:18.406Z","avatar_url":"https://github.com/mjamesd.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pressed Words\n![status: stable](https://img.shields.io/badge/stable-version%201.0-green)\n\n![License: GNU General Publice License v3.0](https://img.shields.io/badge/license-GNU%20General%20Publice%20License%20v3.0-yellowgreen)\n\n## Description\nPressed Words is a blog app with an MVC content management system using Express.js as the back end, Handlbars as the front end, and MySQL as the database. It utilizes asynchronous JavaScript functions and performs CRUD functions (Create, Read, Update, and Delete) on users, posts, and comments. Unauthenticated users can view the homepage which displays all posts and comments. Once the user registers, they can view individual posts and comments as well as create, update, and delete their own posts and comments. The database login information as well as other behind-the-scenes info is kept in a .env file and is not accessible from the web.\n\nThe app uses the `MySQL2`, `Express`, `Express-Handlebars`, `Express-Session`, `dotenv`, and `Sequelize` Node.js packages.\n\n### User Story\n\n```md\nAS A developer who writes about various things\nI WANT a CMS-style blog site\nSO THAT I can publish articles, blog posts, and my thoughts and opinions\n\nGIVEN a CMS-style blog site\nWHEN I visit the site for the first time\nTHEN I am presented with the homepage, which includes existing blog posts if any have been posted; navigation links for the homepage and the dashboard; and the option to log in\nWHEN I click on the homepage option\nTHEN I am taken to the homepage\nWHEN I click on any other links in the navigation\nTHEN I am prompted to either sign up or sign in\nWHEN I choose to sign up\nTHEN I am prompted to create a username and password\nWHEN I click on the sign-up button\nTHEN my user credentials are saved and I am logged into the site\nWHEN I revisit the site at a later time and choose to sign in\nTHEN I am prompted to enter my username and password\nWHEN I am signed in to the site\nTHEN I see navigation links for the homepage, the dashboard, and the option to log out\nWHEN I click on the homepage option in the navigation\nTHEN I am taken to the homepage and presented with existing blog posts that include the post title and the date created\nWHEN I click on an existing blog post\nTHEN I am presented with the post title, contents, post creator’s username, and date created for that post and have the option to leave a comment\nWHEN I enter a comment and click on the submit button while signed in\nTHEN the comment is saved and the post is updated to display the comment, the comment creator’s username, and the date created\nWHEN I click on the dashboard option in the navigation\nTHEN I am taken to the dashboard and presented with any blog posts I have already created and the option to add a new blog post\nWHEN I click on the button to add a new blog post\nTHEN I am prompted to enter both a title and contents for my blog post\nWHEN I click on the button to create a new blog post\nTHEN the title and contents of my post are saved and I am taken back to an updated dashboard with my new blog post\nWHEN I click on one of my existing posts in the dashboard\nTHEN I am able to delete or update my post and taken back to an updated dashboard\nWHEN I click on the logout option in the navigation\nTHEN I am signed out of the site\nWHEN I am idle on the site for more than a set time\nTHEN I am able to view comments but I am prompted to log in again before I can add, update, or delete comments\n```\n\n## Table of Contents\n1. [Description](#description)\n2. [Installation](#installation)\n3. [Usage](#usage)\n4. [License](#license)\n5. [Questions](#questions)\n\n## Installation\n\nTo start using Pressed Words, first clone [the repo](https://github.com/mjamesd/jubilant-robot) to your server. Then run `npm i` to install all the dependent packages.\n\nNext, open `connection.js` in the `connection` folder. Change the MySQL user and password to your own MySQL server credentials (or your own JawsDB connection string). Next, look in the \"sql\" folder. In MySQL, run the SQL statements in `schema.sql`. Then seed the database by running the command `npm run seed`.\n\n## Usage\n\nOpen a terminal, navigate to the directory containing the `server.js` file, then run `npm run start` to start the app.\n\n## License\n\nThis work is licensed under GNU General Publice License v3.0.\n\n## Questions\n\nVisit [the app's GitHub repo](https://github.com/mjamesd/jubilant-robot).\n\nTo reach me with additional questions, email me at [mjamesd@gmail.com](mailto:mjamesd@gmail.com).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjamesd%2Fjubilant-robot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmjamesd%2Fjubilant-robot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjamesd%2Fjubilant-robot/lists"}