2019-05-06 16:17:16 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Plugin Folders and Files Architecture
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 03:41:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								The logic of a plugin is located at its root directory `./plugins/**` . The admin panel related parts of each plugin are contained in the `/admin`  folder.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The folders and files structure are the following:
							 
						 
					
						
							
								
									
										
										
										
											2019-05-06 16:17:16 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-16 18:12:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  ```
  
						 
					
						
							
								
									
										
										
										
											2019-05-06 16:17:16 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── admin // Contains the plugin's front-end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     └─── src // Source code directory
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── index.js // Entry point of the plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── pluginId.js // Name of the plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── lifecycles.js // File in which the plugin sets the hooks to be ran in another plugin.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── components // Contains the list of React components used by the plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── containers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |    └─── App // Container used by every others containers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |    └─── Initializer // This container is required, it is used to executed logic right after the plugin is mounted.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |    └─── HomePage
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── action.js // List of Redux actions used by the current container
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── constants.js // List of actions constants
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── index.js // React component of the current container
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── reducer.js // Redux reducer used by the current container
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── sagas.js // List of sagas functions
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── selectors.js // List of selectors
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |         └─── styles.scss // Style of the current container
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|          └─── translations // Contains the translations to make the plugin internationalized
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|               └─── en.json
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|               └─── index.js // File that exports all the plugin's translations.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|               └─── fr.json
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── config // Contains the configurations of the plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     └─── functions
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     |    └─── bootstrap.js // Asynchronous bootstrap function that runs before the app gets started
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     └─── policies // Folder containing the plugin's policies
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     └─── queries // Folder containing the plugin's models queries
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|     └─── routes.json // Contains the plugin's API routes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── controllers // Contains the plugin's API controllers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── middlewares // Contains the plugin's middlewares
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── models // Contains the plugin's API models
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└─── services // Contains the plugin's API services
							 
						 
					
						
							
								
									
										
										
										
											2019-05-16 18:12:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								``` -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								plugin/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── config/ # Contains the configurations of the plugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│     ├── functions/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│     │    └── bootstrap.js # Asynchronous bootstrap function that runs before the app gets started
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│     ├── policies/ # Folder containing the plugin's policies
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│     ├── queries/ # Folder containing the plugin's models queries
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│     └── routes.json # Contains the plugin's API routes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── controllers/ # Contains the plugin's API controllers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── middlewares/ # Contains the plugin's middlewares
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── models/ # Contains the plugin's API models
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└── services/ # Contains the plugin's API services
							 
						 
					
						
							
								
									
										
										
										
											2019-05-06 16:17:16 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```