{"id":26198923,"url":"https://github.com/antogno/blogsonic","last_synced_at":"2026-04-18T17:32:19.260Z","repository":{"id":41241490,"uuid":"374686474","full_name":"antogno/blogsonic","owner":"antogno","description":"Blogsonic is a simple CRUD Web Application in PHP.","archived":false,"fork":false,"pushed_at":"2023-03-27T18:25:33.000Z","size":3610,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-02T06:44:45.889Z","etag":null,"topics":["codeception","codeigniter","crud","mysql","php","website"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antogno.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2021-06-07T14:00:33.000Z","updated_at":"2025-01-02T13:11:34.000Z","dependencies_parsed_at":"2025-07-02T06:36:34.280Z","dependency_job_id":"3a788100-1036-437c-9b35-9389743f8840","html_url":"https://github.com/antogno/blogsonic","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/antogno/blogsonic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antogno%2Fblogsonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antogno%2Fblogsonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antogno%2Fblogsonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antogno%2Fblogsonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antogno","download_url":"https://codeload.github.com/antogno/blogsonic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antogno%2Fblogsonic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31977964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: 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":["codeception","codeigniter","crud","mysql","php","website"],"created_at":"2025-03-12T02:55:08.504Z","updated_at":"2026-04-18T17:32:19.246Z","avatar_url":"https://github.com/antogno.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blogsonic\n\n\u003cp\u003e\n\t\u003ca href=\"https://github.com/antogno/blogsonic/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/antogno/blogsonic\" alt=\"License\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/antogno/blogsonic/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/antogno/blogsonic\" alt=\"Last commit\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/antogno/blogsonic/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/antogno/blogsonic?label=last%20release\" alt=\"Last release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nBlogsonic is a simple CRUD Web Application in PHP.\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg alt=\"Blogsonic screenshot\" src=\"https://raw.githubusercontent.com/antogno/blogsonic/master/public/img/blogsonic-screenshot.png\"\u003e\n\u003c/p\u003e\n\n---\n\n## Table of contents\n\n- [What is Blogsonic?](#what-is-blogsonic)\n- [Installation](#installation)\n- [Running the acceptance tests](#running-the-acceptance-tests)\n- [License](#license)\n- [Links](#links)\n\n## What is Blogsonic?\n\nBlogsonic is a simple CRUD Web Application in PHP. It could be defined as a mini Social Network that allows you to post text content (called Blogs) visible to all.\n\n\u003e **Note**: The existence of Blogsonic has the sole purpose of showing a very basic example of a CRUD Web Application. This means that not much attention has been paid to the general appereance of the website and to the code and its structure. Therefore, Blogsonic **should not** be used as a reference point in these respects, but should be considered as a starting point for beginners from which to start understanding the basic concepts.\n\n### How was Blogsonic created?\n\nBlogsonic was created using the following tools and technologies:\n\n- Front-end:\n  - HTML;\n  - CSS (framework: Bootstrap);\n  - JavaScript;\n  - jQuery;\n  - AJAX.\n- Back-end:\n  - PHP (framework: CodeIgniter 3.1.11);\n  - MySQL.\n\nBlogsonic also exists thanks to:\n\n- [Font Awesome 4.7.0 icons][1];\n- [Bootswatch Spacelab theme][2];\n- [Codeception][3];\n- [realfavicongenerator.net][4].\n\n### Who created Blogsonic?\n\nThe designer and creator of Blogsonic it's me, that is Antonio Granaldi. You can see my LinkedIn profile by [clicking here][5].\n\n### How can I contact you?\n\nYou can contact me on my LinkedIn profile above, or by sending an email to [tonio.granaldi@gmail.com](mailto:tonio.granaldi@gmail.com).\n\n### Can I use the Blogsonic source code?\n\nOf course! You can find everything you need on [GitHub][6].\n\n## Installation\n\nFollow the next steps to set up Blogsonic.\n\n### Set up database\n\nCreate a database and add the following tables. You can also find these tables in `application/tables/`.\n\n```sql\nCREATE TABLE `users` (\n\t`id` int NOT NULL AUTO_INCREMENT,\n\t`name` varchar(50) NOT NULL,\n\t`surname` varchar(50) NOT NULL,\n\t`gender` varchar(1) NOT NULL,\n\t`username` varchar(50) NOT NULL,\n\t`password` varchar(255) NOT NULL,\n\t`email` varchar(50) NOT NULL,\n\t`phone` varchar(13) NOT NULL,\n\t`language` varchar(2) NOT NULL,\n\t`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\tPRIMARY KEY (`id`)\n);\n```\n\n```sql\nCREATE TABLE `blogs` (\n\t`id` int NOT NULL AUTO_INCREMENT,\n\t`user_id` int NOT NULL,\n\t`title` varchar(20) NOT NULL,\n\t`body` text NOT NULL,\n\t`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n\tPRIMARY KEY (`id`),\n\tCONSTRAINT `fk_usersblogs` FOREIGN KEY (`user_id`)\n\tREFERENCES `users`(`id`)\n\tON UPDATE CASCADE\n\tON DELETE CASCADE\n);\n```\n\n```sql\nCREATE TABLE IF NOT EXISTS `sessions` (\n\t`id` varchar(128) NOT NULL,\n\t`ip_address` varchar(45) NOT NULL,\n\t`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,\n\t`data` blob NOT NULL,\n\tKEY `sessions_timestamp` (`timestamp`)\n);\n```\n\n### Create the `.env` file\n\nCopy the `.env.example` file in the root of the project and name it `.env`.\n\n```console\n$ cp .env.example .env\n```\n\nThe valid variables are:\n\n- `CI_ENV`: defines the current environment. The available options are: `development`, `testing` and `production`. Setting the variable to a value of `development` will cause all PHP errors to be rendered to the browser when they occur. Conversely, setting the variable to `production` will disable all error output;\n- `BLOGSONIC_BASE_URL`\n- `BLOGSONIC_ENCRYPTION_KEY`: to generate an encryption key, you can go to [RandomKeygen][7] and scroll down to \"CodeIgniter Encryption Keys\";\n- `BLOGSONIC_IN_EMAIL`: email address to be used publicly for contact purposes;\n- `BLOGSONIC_OUT_EMAIL`: the outgoing email (e.g.: sending the forgotten password email);\n- `BLOGSONIC_OUT_EMAIL_SMTP_PORT`\n- `BLOGSONIC_OUT_EMAIL_SMTP_HOST`\n- `BLOGSONIC_OUT_EMAIL_SMTP_USER`\n- `BLOGSONIC_OUT_EMAIL_SMTP_PASS`\n- `DB_HOST`\n- `DB_USER`\n- `DB_PASS`\n- `DB_NAME`\n\n## Running the acceptance tests\n\nIf you want to, you can also run the acceptance tests made with [Codeception][3]. To do this, follow the next steps.\n\n\u003e **Note**: If you decide to run the acceptance tests before actually using Blogsonic, you can skip the previous [tables creation](#set-up-database) step.\n\n### Install Google Chrome and ChromeDriver\n\nInstall Google Chrome and check its version.\n\n```console\n$ google-chrome --version\n```\n\nGo to the [ChromeDriver website][9] and check which ChromeDriver version is the closest to your Google Chrome version.\n\nThen:\n\n```console\n$ wget https://chromedriver.storage.googleapis.com/\u003cversion\u003e/chromedriver_linux64.zip\n```\n\n```console\n$ unzip chromedriver_linux64.zip\n```\n\n```console\n# mv chromedriver /usr/bin/chromedriver\n```\n\n### Install the Composer packages\n\nFrom the `blogsonic/` folder, run the following command:\n\n```console\n$ bin/composer install\n```\n\n### Start ChromeDriver\n\n```console\n$ chromedriver --url-base=/wd/hub\n```\n\n### Run the acceptance tests\n\n```console\n$ vendor/bin/codecept run\n```\n\nYou can also use the following command if you want to see all the single steps.\n\n```console\n$ vendor/bin/codecept run --steps\n```\n\n\u003e **Note**: Running the acceptance tests will empty all the tables.\n\nAll tests are independent of each other. This means that you can run a single test (or a single suite) individually.\n\nTo run a single suite (found in the `tests/acceptance/` folder), use:\n\n```console\n$ vendor/bin/codecept run acceptance \u003cname of the suite\u003e\n```\n\nTo run a single test from a suite, use:\n\n```console\n$ vendor/bin/codecept run acceptance \u003cname of the suite\u003e::\u003cname of the test\u003e\n```\n\nFor example:\n\n```console\n$ vendor/bin/codecept run acceptance ProfilesCest\n```\n\n```console\n$ vendor/bin/codecept run acceptance ProfilesCest::register\n```\n\nFor more information, see the official [Codeception documentation][10].\n\n## License\n\nBlogsonic is licensed under the terms of the [Creative Commons Zero v1.0 Universal license][11].\n\nFor more information, see the [Creative Commons website][12].\n\n## Links\n\n- [GitHub][6]\n- [LinkedIn][5]\n- [Twitter][13]\n\n[1]: https://fontawesome.com/v4.7/ \"Font Awesome - The iconic font and CSS toolkit\"\n[2]: https://bootswatch.com/spacelab/ \"Bootswatch - Free themes for Bootstrap\"\n[3]: https://codeception.com/ \"Codeception - PHP testing framework\"\n[4]: https://realfavicongenerator.net/ \"Favicon Generator\"\n[5]: https://www.linkedin.com/in/antonio-granaldi/ \"Antonio Granaldi - Linkedin\"\n[6]: https://github.com/antogno/blogsonic \"Blogsonic - GitHub\"\n[7]: https://randomkeygen.com/#ci_key \"RandomKeygen\"\n[8]: https://myaccount.google.com/lesssecureapps \"Less secure apps - Google Accounts\"\n[9]: https://chromedriver.chromium.org/downloads \"ChromeDriver - WebDriver for Chrome\"\n[10]: https://codeception.com/docs/modules/Db \"Documentation - Codeception\"\n[11]: https://github.com/antogno/blogsonic/blob/master/LICENSE \"License\"\n[12]: https://creativecommons.org/publicdomain/zero/1.0/ \"Creative Commons\"\n[13]: https://twitter.com/AGranaldi \"AGranaldi - Twitter\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantogno%2Fblogsonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantogno%2Fblogsonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantogno%2Fblogsonic/lists"}