Hey! Let me begin by asking you, is there any specific reason why you want to use AWS? If there is something, I might be able to help you with some alternatives, if you please! :)
Alright, I would recommend you to go with the MEAN stack; apart, you change a the following:
- (M)ongoDB to MySQL
Since you haven't told us about your experience in MySQL, we can't really gauge. :( Following the general consensus, I would be against using NoSQL as it might prove to be a little overwhelming. You are more than good with MySQL, especially if you have such a small set of data.
You might want to break this down into two parts:
- the **backend** -- Handles all the data processing, server-side logic;
- the **frontend** -- Handles all the view-related logic; stuff like showing the UI to the user.
For the backend, you'd use Mongo/MySQL + Express + Node. Here, Mongo/MySQL are your data aggregation tiers; Express is the framework for creating the API (provides some really easy to use abstractions, and whatnot); Node is the V8-based "framework" which uses JavaScript to run code on the server-side.
You can follow the RESTful paradigm. It simplifies a lot of the code, and is really simple to maintain. If you need help with this, I will be more than happy to expand this answer to include a little bit about that as well.
/admin is easy using the ngUi.router module. Very simple, very efficient, very flexible.
Lastly, "problem is the http protocol.... links for products" Use REST.
So, say you had a product with an ID in the database of, say, 1. Now, since you come from a PHP background, you must be using something like
product.com/api/productfunction=get&id=1
And (hopefully) this returns JSON.
This architecture seems really simple when you are considering small scaled application, with not many operations. However, maintaining this gets really tedious, really quick. With 4 operations (Create Read Update Delete), this is fine; however, when you want sorting options, and pagination, this might get really complicated. And if you wanted some sort of authentication/authorization routine, this will just blow up.
And hence, I introduce you to REST. Or Representational State Transfer. Very simply put, we use HTTP Verbs (GET, POST, PUT, DELETE) for the CRUD operations on a single route.
Let's see how the example above would translate to REST:
http://product.com/api/product/1 (HTTP GET)
Or, to get all products:
http://product.com/api/product (HTTP GET)
Create - POST
Read - GET
Update - PUT
Delete - DELETE
Now, you have converted that tedious URL to something really manageable. You're welcome! ;)
In REST, we have a noun (say, a product), and a route attached to it: endpoint/<noun>. And you operate on them!
Personally, for a webapp like this, I map my URLs in the following way
`http://api.name.com/`
`http://app.name.com/`
Where <app> serves as the domain which points to our AngularJS application, and <api> points to our Express backend (I use a Express equivalent: Hapi.js)
Then, for versioning, I have api.name.com/v1/<verb>
I have written multiple/tude answers on this topic. However, if you want to know something specific, I would be more than delighted to help you! :)
I hope this helps! :D