diff --git a/api/homepage/config/routes.json b/api/homepage/config/routes.json new file mode 100644 index 0000000..64e978d --- /dev/null +++ b/api/homepage/config/routes.json @@ -0,0 +1,28 @@ +{ + "routes": [ + { + "method": "GET", + "path": "/homepage", + "handler": "homepage.find", + "config": { + "policies": [] + } + }, + { + "method": "PUT", + "path": "/homepage", + "handler": "homepage.update", + "config": { + "policies": [] + } + }, + { + "method": "DELETE", + "path": "/homepage", + "handler": "homepage.delete", + "config": { + "policies": [] + } + } + ] +} diff --git a/api/homepage/controllers/homepage.js b/api/homepage/controllers/homepage.js new file mode 100644 index 0000000..f94f227 --- /dev/null +++ b/api/homepage/controllers/homepage.js @@ -0,0 +1,8 @@ +'use strict'; + +/** + * Read the documentation (https://strapi.io/documentation/3.0.0-beta.x/concepts/controllers.html#core-controllers) + * to customize this controller + */ + +module.exports = {}; diff --git a/api/homepage/documentation/1.0.0/homepage.json b/api/homepage/documentation/1.0.0/homepage.json new file mode 100644 index 0000000..047b06a --- /dev/null +++ b/api/homepage/documentation/1.0.0/homepage.json @@ -0,0 +1,550 @@ +{ + "paths": { + "/homepage": { + "get": { + "deprecated": false, + "description": "Find all the homepage's records", + "responses": { + "200": { + "description": "Retrieve homepage document(s)", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Homepage" + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Homepage" + ], + "parameters": [ + { + "name": "_limit", + "in": "query", + "required": false, + "description": "Maximum number of results possible", + "schema": { + "type": "integer" + }, + "deprecated": false + }, + { + "name": "_sort", + "in": "query", + "required": false, + "description": "Sort according to a specific field.", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_start", + "in": "query", + "required": false, + "description": "Skip a specific number of entries (especially useful for pagination)", + "schema": { + "type": "integer" + }, + "deprecated": false + }, + { + "name": "=", + "in": "query", + "required": false, + "description": "Get entries that matches exactly your input", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_ne", + "in": "query", + "required": false, + "description": "Get records that are not equals to something", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_lt", + "in": "query", + "required": false, + "description": "Get record that are lower than a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_lte", + "in": "query", + "required": false, + "description": "Get records that are lower than or equal to a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_gt", + "in": "query", + "required": false, + "description": "Get records that are greater than a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_gte", + "in": "query", + "required": false, + "description": "Get records that are greater than or equal a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_contains", + "in": "query", + "required": false, + "description": "Get records that contains a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_containss", + "in": "query", + "required": false, + "description": "Get records that contains (case sensitive) a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_in", + "in": "query", + "required": false, + "description": "Get records that matches any value in the array of values", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "deprecated": false + }, + { + "name": "_nin", + "in": "query", + "required": false, + "description": "Get records that doesn't match any value in the array of values", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "deprecated": false + } + ] + }, + "put": { + "deprecated": false, + "description": "Update a single homepage record", + "responses": { + "200": { + "description": "Retrieve homepage document(s)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Homepage" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Homepage" + ], + "requestBody": { + "description": "", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewHomepage" + } + } + } + }, + "parameters": [] + }, + "delete": { + "deprecated": false, + "description": "Delete a single homepage record", + "responses": { + "200": { + "description": "deletes a single homepage based on the ID supplied", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int64" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Homepage" + ], + "parameters": [] + } + } + }, + "components": { + "schemas": { + "Homepage": { + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" + }, + "Content": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Banner1": { + "type": "string" + }, + "Banner2": { + "type": "string" + }, + "Image1": { + "type": "array", + "items": { + "required": [ + "id", + "name", + "hash", + "mime", + "size", + "url", + "provider" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "type": "string" + }, + "caption": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "formats": { + "type": "object" + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "type": "object" + }, + "related": { + "type": "string" + } + } + } + }, + "Image2": { + "type": "array", + "items": { + "required": [ + "id", + "name", + "hash", + "mime", + "size", + "url", + "provider" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "type": "string" + }, + "caption": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "formats": { + "type": "object" + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "type": "object" + }, + "related": { + "type": "string" + } + } + } + }, + "Image3": { + "type": "array", + "items": { + "required": [ + "id", + "name", + "hash", + "mime", + "size", + "url", + "provider" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "type": "string" + }, + "caption": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "formats": { + "type": "object" + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "type": "object" + }, + "related": { + "type": "string" + } + } + } + } + } + }, + "NewHomepage": { + "properties": { + "Content": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Banner1": { + "type": "string" + }, + "Banner2": { + "type": "string" + } + } + } + } + }, + "tags": [ + { + "name": "Homepage" + } + ] +} \ No newline at end of file diff --git a/api/homepage/models/homepage.js b/api/homepage/models/homepage.js new file mode 100644 index 0000000..2400d29 --- /dev/null +++ b/api/homepage/models/homepage.js @@ -0,0 +1,55 @@ +'use strict'; + +/** + * Lifecycle callbacks for the `homepage` model. + */ + +module.exports = { + // Before saving a value. + // Fired before an `insert` or `update` query. + // beforeSave: async (model, attrs, options) => {}, + + // After saving a value. + // Fired after an `insert` or `update` query. + // afterSave: async (model, response, options) => {}, + + // Before fetching a value. + // Fired before a `fetch` operation. + // beforeFetch: async (model, columns, options) => {}, + + // After fetching a value. + // Fired after a `fetch` operation. + // afterFetch: async (model, response, options) => {}, + + // Before fetching all values. + // Fired before a `fetchAll` operation. + // beforeFetchAll: async (model, columns, options) => {}, + + // After fetching all values. + // Fired after a `fetchAll` operation. + // afterFetchAll: async (model, response, options) => {}, + + // Before creating a value. + // Fired before an `insert` query. + // beforeCreate: async (model, attrs, options) => {}, + + // After creating a value. + // Fired after an `insert` query. + // afterCreate: async (model, attrs, options) => {}, + + // Before updating a value. + // Fired before an `update` query. + // beforeUpdate: async (model, attrs, options) => {}, + + // After updating a value. + // Fired after an `update` query. + // afterUpdate: async (model, attrs, options) => {}, + + // Before destroying a value. + // Fired before a `delete` query. + // beforeDestroy: async (model, attrs, options) => {}, + + // After destroying a value. + // Fired after a `delete` query. + // afterDestroy: async (model, attrs, options) => {} +}; diff --git a/api/homepage/models/homepage.settings.json b/api/homepage/models/homepage.settings.json new file mode 100644 index 0000000..e3a3299 --- /dev/null +++ b/api/homepage/models/homepage.settings.json @@ -0,0 +1,58 @@ +{ + "kind": "singleType", + "collectionName": "homepages", + "info": { + "name": "Homepage" + }, + "options": { + "increments": true, + "timestamps": true + }, + "attributes": { + "Content": { + "type": "richtext" + }, + "Title": { + "type": "string" + }, + "Banner1": { + "type": "richtext" + }, + "Banner2": { + "type": "richtext" + }, + "Image1": { + "collection": "file", + "via": "related", + "allowedTypes": [ + "images", + "files", + "videos" + ], + "plugin": "upload", + "required": false + }, + "Image2": { + "collection": "file", + "via": "related", + "allowedTypes": [ + "images", + "files", + "videos" + ], + "plugin": "upload", + "required": false + }, + "Image3": { + "collection": "file", + "via": "related", + "allowedTypes": [ + "images", + "files", + "videos" + ], + "plugin": "upload", + "required": false + } + } +} diff --git a/api/homepage/services/homepage.js b/api/homepage/services/homepage.js new file mode 100644 index 0000000..d0dcc88 --- /dev/null +++ b/api/homepage/services/homepage.js @@ -0,0 +1,8 @@ +'use strict'; + +/** + * Read the documentation (https://strapi.io/documentation/3.0.0-beta.x/concepts/services.html#core-services) + * to customize this service + */ + +module.exports = {}; diff --git a/api/test/documentation/1.0.0/test.json b/api/test/documentation/1.0.0/test.json new file mode 100644 index 0000000..7ea347e --- /dev/null +++ b/api/test/documentation/1.0.0/test.json @@ -0,0 +1,544 @@ +{ + "paths": { + "/tests": { + "get": { + "deprecated": false, + "description": "", + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Test" + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "parameters": [ + { + "name": "_limit", + "in": "query", + "required": false, + "description": "Maximum number of results possible", + "schema": { + "type": "integer" + }, + "deprecated": false + }, + { + "name": "_sort", + "in": "query", + "required": false, + "description": "Sort according to a specific field.", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_start", + "in": "query", + "required": false, + "description": "Skip a specific number of entries (especially useful for pagination)", + "schema": { + "type": "integer" + }, + "deprecated": false + }, + { + "name": "=", + "in": "query", + "required": false, + "description": "Get entries that matches exactly your input", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_ne", + "in": "query", + "required": false, + "description": "Get records that are not equals to something", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_lt", + "in": "query", + "required": false, + "description": "Get record that are lower than a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_lte", + "in": "query", + "required": false, + "description": "Get records that are lower than or equal to a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_gt", + "in": "query", + "required": false, + "description": "Get records that are greater than a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_gte", + "in": "query", + "required": false, + "description": "Get records that are greater than or equal a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_contains", + "in": "query", + "required": false, + "description": "Get records that contains a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_containss", + "in": "query", + "required": false, + "description": "Get records that contains (case sensitive) a value", + "schema": { + "type": "string" + }, + "deprecated": false + }, + { + "name": "_in", + "in": "query", + "required": false, + "description": "Get records that matches any value in the array of values", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "deprecated": false + }, + { + "name": "_nin", + "in": "query", + "required": false, + "description": "Get records that doesn't match any value in the array of values", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "deprecated": false + } + ] + }, + "post": { + "deprecated": false, + "description": "Create a new record", + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Test" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "requestBody": { + "description": "", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewTest" + } + } + } + } + } + }, + "/tests/count": { + "get": { + "deprecated": false, + "description": "", + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "properties": { + "count": { + "type": "integer" + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "parameters": [] + } + }, + "/tests/{id}": { + "get": { + "deprecated": false, + "description": "", + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Test" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "deprecated": false, + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "put": { + "deprecated": false, + "description": "Update a record", + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Test" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "requestBody": { + "description": "", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewTest" + } + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "deprecated": false, + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "deprecated": false, + "description": "Delete a record", + "responses": { + "200": { + "description": "deletes a single record based on the ID supplied", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int64" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "summary": "", + "tags": [ + "Test" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "deprecated": false, + "required": true, + "schema": { + "type": "string" + } + } + ] + } + } + }, + "components": { + "schemas": { + "Test": { + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + } + } + }, + "NewTest": { + "properties": { + "title": { + "type": "string" + } + } + } + } + }, + "tags": [ + { + "name": "Test" + } + ] +} \ No newline at end of file diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..ccfad14 --- /dev/null +++ b/todo.md @@ -0,0 +1,23 @@ +# To Do + +Configure S3 addon and Configure + +Strapi documentation - build and host + +Deploy strapi as load balanced rather than single instance + +RDS cloudformation template + Create an RDS db before deployment + Configure Strapi to use this RDS db + +Use cloudformation to deploy bucket instead of tieing it to the RDS instance. + +Combine ELB Documentations (strapi, ELB etc) + +Use codebuild to update strapi + +Use circle CI instead + +Finish the backgrounds for the demo website + +Cloudformation template to deploy an S3 bucket