{"id":16770927,"url":"https://github.com/alexislefebvre/asynctweetsbundle","last_synced_at":"2025-11-02T04:30:24.921Z","repository":{"id":29730976,"uuid":"33274240","full_name":"alexislefebvre/AsyncTweetsBundle","owner":"alexislefebvre","description":"Symfony bundle providing a Twitter reader for asynchronous reading + tests \u0026 CI experiments","archived":true,"fork":false,"pushed_at":"2021-03-09T20:57:20.000Z","size":415,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T18:57:54.458Z","etag":null,"topics":["bundle","circleci","php","symfony","symfony-bundle","travis-ci","twitter-keys"],"latest_commit_sha":null,"homepage":"https://asynctweets.alexislefebvre.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexislefebvre.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}},"created_at":"2015-04-01T21:34:19.000Z","updated_at":"2024-12-14T22:45:07.000Z","dependencies_parsed_at":"2022-07-24T16:32:03.745Z","dependency_job_id":null,"html_url":"https://github.com/alexislefebvre/AsyncTweetsBundle","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexislefebvre%2FAsyncTweetsBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexislefebvre%2FAsyncTweetsBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexislefebvre%2FAsyncTweetsBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexislefebvre%2FAsyncTweetsBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexislefebvre","download_url":"https://codeload.github.com/alexislefebvre/AsyncTweetsBundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238777150,"owners_count":19528813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bundle","circleci","php","symfony","symfony-bundle","travis-ci","twitter-keys"],"created_at":"2024-10-13T06:26:02.507Z","updated_at":"2025-11-02T04:30:24.849Z","avatar_url":"https://github.com/alexislefebvre.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AsyncTweetsBundle\n\nA Symfony bundle providing a Twitter reader for asynchronous reading\n\n[Packagist ![Latest Stable Version][Packagist Stable Image] ![Latest Unstable Version][Packagist Unstable Image]][Packagist]\n\nBuilds: \n[![GA status][GitHub Actions image]][GitHub Actions]\n[![Build status][Travis Master image]][Travis Master]\n[![AppVeyor][AppVeyor image]][AppVeyor]\n[![Circle CI][Circle CI image]][Circle CI]\n\nCode analysis:\n[![Scrutinizer Code Quality][Scrutinizer image]\n![Scrutinizer][Scrutinizer Coverage Image]][Scrutinizer]\n[![Coveralls][Coveralls image]][Coveralls]\n[![Code Climate][Code Climate image]][Code Climate]\n[![Codacy][Codacy image]][Codacy]\n[![StyleCI][StyleCI image]][StyleCI]\n[![SymfonyInsight][SymfonyInsight Image]][SymfonyInsight]\n\n## Links\n\n - Demo: https://asynctweets.alexislefebvre.com/demo/\n - Code coverage: https://asynctweets.alexislefebvre.com/codecoverage/\n - Doxygen: https://asynctweets.alexislefebvre.com/doxygen/\n - ApiGen: https://asynctweets.alexislefebvre.com/apigen/\n\n## Goal\n\nThe goal of this project is to create an online Twitter reader, built with [Symfony][Symfony].\nAsyncTweets retrieves and stores your timeline, allowing to read your Twitter timeline even if you're away from your Twitter client for several days.\n\nThis bundle is also used to test several CI (Continuous Integration) services.\n\n## Features\n\n - Retrieve tweets by using User's Twitter keys\n - Display the tweets with a pagination\n - Display images below tweets\n\n## Installation\n\n### Requirements:\n\n - [Twitter keys][Twitter keys]\n - PHP \u003e= 7.2\n - a database (must be supported by Doctrine2)\n - [Symfony][Symfony GitHub] (3.4+) with [Composer][Composer]\n\n### Steps:\n \n 1. Install this bundle with Composer: `composer require alexislefebvre/async-tweets-bundle`\n 2. Add the bundle in \u003ckbd\u003eapp/AppKernel.php\u003c/kbd\u003e:\n\n        \u003c?php\n        \n        public function registerBundles()\n        {\n            $bundles = array(\n                // ...\n                new AlexisLefebvre\\Bundle\\AsyncTweetsBundle\\AsyncTweetsBundle(),\n            );\n        }\n\n 3. Enter your Twitter keys at the end of the \u003ckbd\u003eapp/config/parameters.yml\u003c/kbd\u003e file:\n\n        twitter_consumer_key: null\n        twitter_consumer_secret: null\n        twitter_token: null\n        twitter_token_secret: null\n\n 4. Create the database and create the tables: `php app/console doctrine:schema:update --force --env=prod`\n\n### Usage:\n\n 1. Launch this command to fetch tweets: `php app/console statuses:hometimeline --table --env=prod`, with the ` --table` option the imported tweets will be shown\n 2. Import the routes in your \u003ckbd\u003eapp/config/routing.yml\u003c/kbd\u003e:\n \n        asynctweets_website:\n            resource: \"@AsyncTweetsBundle/Resources/config/routing.yml\"\n            prefix:   /asynctweets # Use only \"/\" if you want AsyncTweets at the root of the website\n\n 3. Open the page with your browser `.../YOUR_DIRECTORY/web/asynctweets/` or use the following command `php app/console statuses:read --env=prod` to see tweets\n 4. Add `php app/console statuses:hometimeline --env=prod` in your crontab (e.g. every hour) to retrieve tweets automatically\n\n## Dependencies\n - [symfony/symfony][Symfony GitHub] (3.4+)\n - [abraham/twitteroauth][twitteroauth] (^0.6.0)\n - [twitter/bootstrap][Twitter Bootstrap] (use [Bootswatch 3.3.2][Bootstrap CDN])\n\n### Tests:\n\n    make tests\n\n### Quality Assurance:\n\n    make qa\n\n[Packagist]: https://packagist.org/packages/alexislefebvre/async-tweets-bundle\n[Packagist Stable Image]: https://poser.pugx.org/alexislefebvre/async-tweets-bundle/v/stable.svg\n[Packagist Unstable Image]: https://poser.pugx.org/alexislefebvre/async-tweets-bundle/v/unstable.svg\n\n[Symfony]: https://symfony.com/\n[Twitter keys]: https://apps.twitter.com/\n[Symfony GitHub]: https://github.com/symfony/symfony\n[Composer]: https://getcomposer.org/download/\n\n[GitHub Actions image]: https://github.com/alexislefebvre/AsyncTweetsBundle/actions/workflows/tests.yml/badge.svg\n[GitHub Actions]: https://github.com/alexislefebvre/AsyncTweetsBundle/actions/workflows/tests.yml\n\n[Travis Master image]: https://travis-ci.org/alexislefebvre/AsyncTweetsBundle.svg?branch=master\n[Travis Master]: https://travis-ci.org/alexislefebvre/AsyncTweetsBundle\n[AppVeyor image]: https://ci.appveyor.com/api/projects/status/p3n423qlvnrkabg3/branch/master?svg=true\n[AppVeyor]: https://ci.appveyor.com/project/alexislefebvre/asynctweetsbundle/branch/master\n[Circle CI image]: https://circleci.com/gh/alexislefebvre/AsyncTweetsBundle/tree/master.svg?style=shield\u0026circle-token=c02b18cc286ccd9420065675d92a2574524c5939\n[Circle CI]: https://circleci.com/gh/alexislefebvre/AsyncTweetsBundle/tree/master\n\n[Scrutinizer image]: https://scrutinizer-ci.com/g/alexislefebvre/AsyncTweetsBundle/badges/quality-score.png?b=master\n[Scrutinizer]: https://scrutinizer-ci.com/g/alexislefebvre/AsyncTweetsBundle/?branch=master\n[Scrutinizer Coverage image]: https://scrutinizer-ci.com/g/alexislefebvre/AsyncTweetsBundle/badges/coverage.png?b=master\n[Coveralls image]: https://coveralls.io/repos/github/alexislefebvre/AsyncTweetsBundle/badge.svg?branch=master\n[Coveralls]: https://coveralls.io/github/alexislefebvre/AsyncTweetsBundle?branch=master\n[Code Climate image]: https://codeclimate.com/github/alexislefebvre/AsyncTweetsBundle/badges/gpa.svg\n[Code Climate]: https://codeclimate.com/github/alexislefebvre/AsyncTweetsBundle\n[Codacy image]: https://api.codacy.com/project/badge/grade/0803f8e9a98c4abca2c9bcfe750e19c4\n[Codacy]: https://www.codacy.com/app/alexislefebvre/AsyncTweetsBundle\n[StyleCI image]: https://styleci.io/repos/33274240/shield\n[StyleCI]: https://styleci.io/repos/33274240\n[SymfonyInsight Image]: https://insight.symfony.com/projects/22448dd4-13ca-49ef-af7d-5f5bff1b3053/mini.svg\n[SymfonyInsight]: https://insight.symfony.com/projects/22448dd4-13ca-49ef-af7d-5f5bff1b3053\n\n[twitteroauth]: https://github.com/abraham/twitteroauth\n[Twitter Bootstrap]: https://github.com/twbs/bootstrap\n[Bootstrap CDN]: https://www.bootstrapcdn.com/bootswatch/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexislefebvre%2Fasynctweetsbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexislefebvre%2Fasynctweetsbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexislefebvre%2Fasynctweetsbundle/lists"}