¿Arquitectura bonita de Git para server / cliente?

Estoy a punto de comenzar un proyecto bastante grande.

Este proyecto es un website.

  • El backend se hará con Node
  • La interfaz se realizará principalmente con Angular

Backend va a ser una API (que es genial con Angular) pero también (más adelante) para una aplicación de Android.

Frontend va a ser una bifurcación de este repository: https://github.com/maxime1992/webTemplate y quiero poder extraer desde el inicio para mantener el fork actualizado.

Me pregunto. ¿Cómo debería gestionarlo?

  1. ¿Debo crear solo un repository, que contenga la parte posterior y frontend con el submodule o subtree de Git?
  2. ¿Debería crear dos repos separados, uno para el frontend, uno para el backend y luego usar el enlace simbólico para tenerlos juntos? Pero si alguien quiere ejecutarlo en Windows … Muy mal.

Quiero que este proyecto sea de código abierto en GitHub, así que me gustaría tener algo claro y fácil para todos 🙂

Dime cómo lo harías, qué está bien, qué pasa … ¡Tengo mucha curiosidad!

Como se indica en los comentarios, los submodules de Git (o subtreees de Git) no son la solución adecuada para esto. Use una herramienta de administración de dependencies para esto, que funcionará multiplataforma (Linux, Mac, Windows), y es la forma estándar de hacerlo.

La separación de su backend y frontend en proyectos separados es una buena idea, ya que le permitirá administrar proyectos de forma independiente y agregar funcionalidades o aplicaciones adicionales de clientes más adelante sin boost su aplicación.

Como ya está usando Angular para la interfaz, le sugiero que eche un vistazo a Bower , que es la herramienta de administración de dependencies estándar de facto para proyectos frontend. Le permite definir un file bower.json para definir sus dependencies, por ejemplo, bibliotecas angulares y otras frontend, lo que le permite ensamblar su proyecto frontend sin tener que download y almacenar bibliotecas manualmente.

En su proyecto de backend, también debería agregar un file bower.json que declara su proyecto frontend como una dependencia apuntando a su location y sucursal de Git. Bower entonces se encargará de download su proyecto frontend y agregarlo a su proyecto back-end.

Eche un vistazo a algunos de los tutoriales populares de Bower para get más información sobre esto …

Puede usar el bower link para crear automáticamente enlaces simbólicos entre sus proyectos; esto también funcionará en todos los sistemas operativos.

Algunas otras herramientas que quizás desee verificar:

  • Yeoman para andamios un proyecto base. Hay algunos buenos generadores para andamios de proyectos angulares, incluyendo cosas como LESS / SASS y Bootstrap ( https://github.com/yeoman/generator-angular )
  • Winetworkingep para cablear automáticamente sus dependencies de Bower en su file index.html .

Conseguir la configuration inicial de su proyecto será importante. Puede comenzar de a poco y hacer crecer las cosas a una configuration más avanzada más adelante.