My own implementation of the backend challenge.

Overview

Millions backend challenge

My own implementation of the backend challenge.

Implemented features

  • Show posts paginated, and ordered by creation date with their information (Image, description, date, author) including total likes and the last 5 usernames who liked the post.
  • A user can register and login.
  • An authenticated user can create a new post
  • An authenticated user can remove his posts, with the image file
  • An authenticated user can like/unlike other posts.
  • An authenticated user can see all likes of a specific post.
  • Send a notification to other users when a new post is added using (Database channel)
  • Automatically delete posts 15 days old.
  • [BONUS] Created 6 feature tests including success & failure scenarios

Used technologies

  • PHP 7.4
  • Laravel 8
  • PHPUnit
  • Redis (for queue)
  • Tymon/jwt-auth package (for authentication)
  • Docker

Installation Steps

prerequisite: PHP > 7.4

  • Clone repository
  • composer install
  • Create DB eg: backend_api_challenge
  • composer setup (copies env file, generates key, and migrates DB)
  • Then run php artisan serve

Nb: In this project I used redis to store the queued notifications, so you have to configure it locally then run this command php artisan queue:work to run dispatched notifications.

Testing

In this file doc/postman_collection.json you will find the postman collection that you can import into your local postman app and test the api.

You might also like...
Reset UI Bookmarks allows admin users to reset their own UI bookmarks such as state of filters, column positions and applied sorting ( e.g Sales > Orders ).
Reset UI Bookmarks allows admin users to reset their own UI bookmarks such as state of filters, column positions and applied sorting ( e.g Sales Orders ).

Reset Ui Bookmarks Reset UI Bookmarks becomes an invaluable tool while working daily in the admin panel, especially on Magento® instances with a large

Basing on Magento 2 Translation Pack at Crowdin, Magento 2 Slovak Language Pack is buit by Mageplaza team to promote the performance of your storefront when you want to develop the own eCommerce business in the Slovakia market. Rather than the English language, you should consider Slovak language to apporach the domestic customers. Magento 2 Italian Language Pack is special gift for Magento 2 Community Edition. The data of the translation is supplied by Magento 2 Translation Project of Crowdin site, on which you will contribute into the project and download the zip file to install on your own store. This knowledge base will include full of the clear guides that supports you to convert the default language (English) into Italian language on your entire store.
Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.

Imposter Plugin Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins. Built with ♥ by Typ

yform 4 usability addon (temporary until yform gets its own)

massif_usability Package für REDAXO CMS = 5.10.0 temporäres Ersatz-Plugin für yform_usability für yform =4 – bietet ähnliche Funktionalität wie yfor

Download this Plugin and you will have Hive MC server in your own!

Your-Own-Hive Version: v1.9.0 Murder Mystery Update Next Update: Survival Games This Plugin has all the essentials with HiveMC! Updates Every Day! Pla

A plain-language, step-by-step guide for the computer novice to build their own cloud.
A plain-language, step-by-step guide for the computer novice to build their own cloud.

This is a plain-language, step-by-step guide for the computer novice wanting to build their own cloud, looking to declare independence from Google and its ilk, to save on monthly hosting fees, or just learn a new skill.

Osclass Enterprise allows you to quickly build your own classifieds site for free.

Osclass Enterprise Osclass Enterprise is a fork of the Osclass v3.8.0 repository, containing many fixes and improvements (check the CHANGELOG). Releas

Adds my own text to WooCommerce add to cart button.

My Add to Cart Text Adds my own text to WooCommerce add to cart button. Installation Get the .zip package of this plugin. Install manually to your Wor

Releases(1.1.0)
Owner
Mouad ZIANI
Software Engineer. Experienced in PHP & Laravel/Vuejs Stacks. Available as a part time freelancer
Mouad ZIANI
Challenge for 123 milhas.

This app is part of a job interview with 123 Milhas. This repo is functionality complete. Access live demo by click HERE! Getting started Installation

Higor Rocha 1 Nov 11, 2021
Mailing Microservice - My solution for Moroccan PHPers's February 2022 Challenge

Mailing Microservice Solution for Moroccan PHPers's February 2022 Challenge by Rabyâ Raghib ([email protected]). It mainly consists of: a php app th

Rabyâ Raghib 1 Aug 11, 2022
A&D challenge for AIS3 EOF CTF 2022 Final.

A&D challenge for AIS3 EOF CTF 2022 Final.

ꌗᖘ꒒ꀤ꓄꒒ꀤꈤꍟ 5 Feb 28, 2022
Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

null 33 Dec 14, 2022
PHP exercises from my course at ETEC and some of my own play-around with PHP

etec-php-exercises PHP exercises from my course at ETEC and some of my own play-around with PHP Translations: Português (BR) Projects Project Descript

Luis Felipe Santos do Nascimento 6 May 3, 2022
It's goal is to create my own platform where I can play various board games I like.

Card games The goal of this project is to create a social platform where players can communicate, create lobbies and play various board games. Current

Ondřej Mastík 2 Oct 29, 2021
VoteSwiper helps citizens to find a political party that matches their own views in a playful way.

VoteSwiper / WahlSwiper - Website VoteSwiper (in Germany better known as WahlSwiper) is a cross-platform voting advice app for Android, iOS and web br

MOVACT 9 Aug 15, 2022
Minimalistic bookmark manager for your own server written in PHP. Bookmarks are stored in a sqlite database.

b - Bookmark manager b is a minimalistic bookmark manager for your own server. Written in PHP. Bookmarks are stored in a sqlite database. Features: fi

Sebastian Volland 48 Jan 6, 2023
My first attempt at creating my own Rubik's Cube timing interface with PHP and JS!

Cubing Sessions My first attempt at creating my own Rubik's Cube timing interface with PHP and JS! I haved named it the PA Timer for fun, as I hail fr

Adam Gradess 0 Jan 12, 2022
Core - ownCloud gives you freedom and control over your own data.

ownCloud Core ownCloud gives you freedom and control over your own data. A personal cloud which runs on your own server. Why is this so awesome? ?? Ac

ownCloud 7.9k Jan 4, 2023