Création d’un «créateur de site Web» – Comment pourrais-je l’architecte?

J’ai été chargé d’append un constructeur de site Web à notre suite d’applications. La plupart de nos clients sont des propriétaires de petites entresockets non techniques (magasins traditionnels). On m’a dit que je devrais consulter Blogger Template Editor et essayer de voir si je pouvais créer quelque chose de très complet et facile à utiliser. L’idée étant que nos clients devraient être en mesure de mettre leur activité en ligne sans rien connaître du développement Web.

Je travaille principalement avec C # et Silverlight tous les jours. Donc, aller avec .net est probablement le meilleur moyen pour moi. ASP.NET MVC et SPARK semblent très attrayants, mais je ne suis pas trop sûr de la façon dont je vais accomplir les choses suivantes

1- Comment créer un système de modèles permettant à un concepteur de créer des modèles utilisant un certain format et compatibles avec mon application. Existe-t-il un cadre générique pour cela?

2- Comment puis-je conserver les modifications apscopes par le client à son site (par exemple, le client modifie la couleur de fond et ajoute une liste d’ingrédients sur une page).

Edit: Oui, je sais qu’il s’agit d’une tâche ardue et j’envisage potentiellement d’écrire un système de gestion de contenu complet. Cependant, nos clients ont besoin de fonctionnalités très limitées et élémentaires pour commencer. plus tard si le produit s’avère être un succès. Je ferai cependant connaître ces préoccupations à notre responsable.

Au départ, je prévois de leur donner quelques mises en page basées sur des modèles et de leur permettre de personnaliser ce qui se passe dans les différentes sections, ainsi que les couleurs et les images avec CSS. HAML et Sass semblent utiles, et je pourrais conserver tous les parameters personnalisables de l’utilisateur dans une firebase database.

Est-ce que je pense dans la bonne direction ou complètement hors de propos ici?

Cela dépend beaucoup de vos besoins.

Une solution simple consisterait à avoir plusieurs modèles de base avec des espaces réservés qui seront remplis avec du contenu / d’autres modèles ultérieurement.

Par exemple, un modèle pourrait ressembler à ceci:

 foo   

{page_header}

{page_content}

Ensuite, vous fournissez aux utilisateurs un moyen simple de définir les en-têtes de page et les contenus de page, c’est-à-dire que le premier ne peut être qu’une zone de texte. Le contenu est rempli en utilisant quelque chose comme TinyMCE. Si nécessaire, les clients peuvent utiliser d’autres espaces réservés dans le contenu, mais cela peut ne pas être nécessaire.

Après que vous venez d’append un menu généré automatiquement, créez la logique qui remplace les espaces réservés par le contenu saisi par l’utilisateur (quelque chose qui template.Content = template.Content.Replace("{page_content}", customer.Pages['foo'].GetTemplateContent("page_content")); ) et peut-être append une feuille de style CSS avec les parameters de couleur et de police fournis par les clients.

La partie la plus complexe est le backend et l’authentification de l’utilisateur.

Cette solution est simple à mettre en œuvre et n’a aucune réelle flexibilité, mais elle permet aux clients d’écrire rapidement quelques textes et d’append des images sophistiquées sans avoir à se préoccuper de rien d’autre.

Pour conserver les parameters de couleur, écrivez-les dans la firebase database et créez une nouvelle feuille de style CSS à chaque fois qu’ils sont modifiés. Pour un autre contenu, utilisez simplement un tableau “contenu” de la firebase database avec les colonnes “clé” et “valeur” et vous souhaiterez peut-être générer des pages HTML statiques à chaque modification.

Si vous souhaitez utiliser .NET, je vous recommande de jeter un coup d’œil à Umbraco, un système de gestion de contenu open source très populaire avec une très bonne communauté derrière lui. C’est écrit dans Webforms pour le moment, mais la prochaine version (5) est en train d’être refaite dans ASP.NET MVC.

Il est également disponible sur la galerie d’applications Web de Microsoft, ce qui facilite son installation.

On vous a effectivement confié la tâche d’écrire un système de gestion de contenu complet. C’est une tâche gigantesque qui nécessiterait probablement de 6 à 24 mois à un développeur isolé, en fonction de l’expérience (ceci dépend du temps de développement d’autres CMS sur le marché). Par exemple, les développeurs d’Umbraco (un CMS open source ASP.NET) sont en train de transférer leur CMS vers ASP.NET MVC. Les travaux ont commencé au début de cette année et ne devraient pas être mis en place avant le milieu de l’année prochaine. êtes parmi les développeurs les plus talentueux de l’indussortinge.

Je ne doute pas de vos talents, mais si votre patron ne vous a pas donné beaucoup de temps, ou si vous envisagez que votre constructeur de site Web soit extrêmement basique avec des fonctionnalités minimales, peut-être que la création d’un constructeur de site Web ou d’un système de gestion complet est redoutable plus que vous ne pouvez mâcher.

Comme d’autres afficheurs l’ont recommandé, vous devriez peut-être essayer les systèmes de gestion de contenu existants sur le marché, tels que Umbraco, si vous êtes un développeur .NET.

Si vous insistez pour construire le vôtre, il faudra une planification sérieuse. Examinez les modèles de conception architecturale des logiciels tels que DDD (Domain Driven Design), les principes SOLID tels que l’dependency injections, le modèle de référentiel, la persistance, les couches de service, etc. MVC est sans aucun doute la meilleure solution. Consultez également le livre Patterns of Enterprise Application Architecture de Martins Fowler ou Microsoft .NET: Architecture d’applications pour l’entreprise de Dino Esposito ou la conception pilotée par domaine d’ Eric Evans : lutter contre la complexité au cœur du logiciel