├── .editorconfig ├── .env.example ├── .gitattributes ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .styleci.yml ├── README.md ├── app ├── Clients │ └── MagicSource.php ├── Console │ ├── Commands │ │ └── FetchPosts.php │ └── Kernel.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── Auth │ │ │ └── LoginController.php │ │ ├── Controller.php │ │ ├── HomeController.php │ │ ├── PostController.php │ │ └── SourceController.php │ ├── Kernel.php │ ├── Livewire │ │ ├── FavoritePost.php │ │ └── SearchPosts.php │ └── Middleware │ │ ├── Authenticate.php │ │ ├── CheckForMaintenanceMode.php │ │ ├── EncryptCookies.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php ├── Jobs │ └── FetchPostMeta.php ├── Observers │ └── PostObserver.php ├── Post.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── Source.php └── User.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── cors.php ├── database.php ├── filesystems.php ├── hashing.php ├── logging.php ├── mail.php ├── queue.php ├── sentry.php ├── services.php ├── session.php └── view.php ├── database ├── .gitignore ├── factories │ ├── PostFactory.php │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ ├── 2020_05_23_010104_create_sources_table.php │ ├── 2020_05_23_035259_create_posts_table.php │ ├── 2020_05_28_133814_create_jobs_table.php │ ├── 2020_05_29_090836_create_post_user_table.php │ └── 2020_06_06_095040_add_index_on_posts_title.php └── seeds │ ├── DatabaseSeeder.php │ └── PostSeeder.php ├── deploy.sh ├── package.json ├── phpunit.xml ├── public ├── .htaccess ├── css │ └── app.css ├── favicon.ico ├── favicon.png ├── images │ ├── icons │ │ └── icon-view.svg │ ├── login.jpeg │ ├── logos │ │ ├── logo-v.svg │ │ ├── logo.svg │ │ └── logomark.svg │ └── register.jpeg ├── index.php ├── js │ └── app.js ├── mix-manifest.json └── robots.txt ├── resources ├── js │ ├── app.js │ └── bootstrap.js ├── lang │ └── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php ├── sass │ ├── _custom.scss │ └── app.scss └── views │ ├── components │ ├── card-large.blade.php │ ├── card.blade.php │ ├── cards.blade.php │ ├── content-wrapper.blade.php │ ├── login.blade.php │ ├── meta.blade.php │ ├── modals │ │ └── login.blade.php │ ├── search-autocomplete.blade.php │ ├── sidebar.blade.php │ └── topbar.blade.php │ ├── layouts │ ├── app.blade.php │ ├── auth.blade.php │ ├── base.blade.php │ └── tailwind-dynamic.blade.php │ ├── livewire │ ├── favorite-post.blade.php │ └── search-posts.blade.php │ ├── pages │ ├── login.blade.php │ ├── post-view.blade.php │ ├── search.blade.php │ ├── source-view.blade.php │ └── welcome.blade.php │ └── welcome.blade.php ├── routes ├── api.php ├── channels.php ├── console.php └── web.php ├── server.php ├── server_deploy.sh ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── clockwork │ └── .gitignore ├── debugbar │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tailwind.config.js ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php ├── webpack.mix.js └── wipfile /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | LOG_CHANNEL=stack 8 | 9 | DB_CONNECTION=mysql 10 | DB_HOST=127.0.0.1 11 | DB_PORT=3306 12 | DB_DATABASE=laravel 13 | DB_USERNAME=root 14 | DB_PASSWORD= 15 | 16 | BROADCAST_DRIVER=log 17 | CACHE_DRIVER=file 18 | QUEUE_CONNECTION=sync 19 | SESSION_DRIVER=file 20 | SESSION_LIFETIME=120 21 | 22 | REDIS_HOST=127.0.0.1 23 | REDIS_PASSWORD=null 24 | REDIS_PORT=6379 25 | 26 | MAIL_MAILER=smtp 27 | MAIL_HOST=smtp.mailtrap.io 28 | MAIL_PORT=2525 29 | MAIL_USERNAME=null 30 | MAIL_PASSWORD=null 31 | MAIL_ENCRYPTION=null 32 | MAIL_FROM_ADDRESS=null 33 | MAIL_FROM_NAME="${APP_NAME}" 34 | 35 | AWS_ACCESS_KEY_ID= 36 | AWS_SECRET_ACCESS_KEY= 37 | AWS_DEFAULT_REGION=us-east-1 38 | AWS_BUCKET= 39 | 40 | PUSHER_APP_ID= 41 | PUSHER_APP_KEY= 42 | PUSHER_APP_SECRET= 43 | PUSHER_APP_CLUSTER=mt1 44 | 45 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 46 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 47 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CD 2 | 3 | on: 4 | push: 5 | branches: [production] 6 | 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | with: 13 | token: ${{ secrets.PUSH_TOKEN }} 14 | # - name: Set up Node 15 | # uses: actions/setup-node@v1 16 | # with: 17 | # node-version: "13.2" 18 | # - run: npm install 19 | # - run: npm run production 20 | - name: Commit built assets 21 | run: | 22 | git config --local user.email "action@github.com" 23 | git config --local user.name "GitHub Action" 24 | git checkout -B deploy 25 | git push -f origin deploy 26 | - name: Deploy to production 27 | uses: appleboy/ssh-action@master 28 | with: 29 | username: ${{ secrets.USERNAME }} 30 | host: ${{ secrets.HOST }} 31 | password: ${{ secrets.PASSWORD }} 32 | script: "cd ${{ secrets.PATH }} && sh server_deploy.sh" 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /storage/*.key 5 | /storage/debugbar 6 | /vendor 7 | /.idea 8 | /logs 9 | .env 10 | .env.backup 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | npm-debug.log 15 | yarn-error.log 16 | -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | php: 2 | preset: laravel 3 | disabled: 4 | - unused_use 5 | finder: 6 | not-name: 7 | - index.php 8 | - server.php 9 | js: 10 | finder: 11 | not-name: 12 | - webpack.mix.js 13 | css: true 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
{!! Str::limit($post->description, 120) !!}
12 | {{ $post->source->name }} 14 |19 | {{ $post->created_at->format('F j') }} ・ 20 | {{ $post->clicks }} views 21 | 22 |
23 |{!! Str::limit($post->description, 120) !!}
18 | {{ $post->source->name }} 20 |25 | {{ $post->created_at->diffForHumans() }} 26 | ・ 27 | {{ $post->clicks }} views 28 |
29 |We require social login to prevent abuse.
81 |No result found for query {{ $q }}
15 |24 | {{ $post->title }} 25 |
26 |27 | {!! Str::limit($post->description, 70) !!} 28 |
29 |Please enter to see all results
36 |🤩 Open Source
8 |❤️ Free Forever
9 | @overwrite -------------------------------------------------------------------------------- /resources/views/pages/post-view.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 | 11 | 12 | 13 | 22 | @overwrite -------------------------------------------------------------------------------- /resources/views/pages/search.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('page-header') 4 |18 | 22 | No results match that query 23 |
24 | @endif 25 | @overwrite -------------------------------------------------------------------------------- /resources/views/pages/source-view.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('page-header') 4 |