perak / kitchen-site

Meteor Kitchen site source code
MIT License
282 stars 38 forks source link

[Lets Talk] Some refactor suggestion on generator, repository management and future of the project #270

Open cyclops24 opened 8 years ago

cyclops24 commented 8 years ago

Hi @perak , Meteor 1.3 released and it has many improvement. I think it's time to refactor some part of generator for example these are my basic suggestions:

  1. Using npm based package for some wrapper package like moment.js
  2. ES6 support and some cleanup on generated code (from simple things like use let and const rather than var till import & export and ES6 module system)
  3. New folder structure for generated app
  4. Router selection between flow-router, iron-router or react-router (because now kitchen support react well).
  5. Fix some important _security bug_ on dependent packages like this and other security improvement.
  6. Use more maintained and more documented package from community for some part. (for example use alanning:roles rather than perak:user-roles)
  7. Close old issue or use label for organize them for some cleanup on this repository.
  8. Use more project management and source control tools that available here in github from milestone and split branching till gitter chat or other tools for extend project community and brighter way.
  9. I really love meteor-kitchen and want to know future roadmap and news about the project, maybe more update or more detail on What's Up? page useful or maybe better to split _version history_ page from _kitchen news_ (as a new page on kitchen-site) I think it's being useful for lovers like me to know really what's up in now and future not only version history and past changes.

_And one other thing:_ I still think that if you decide to open kitchen-cli source, _now it's best time_ because Meteor 1.3 comes here and I think many changes and new feature needs on meteor-kitchen and always teamwork is better and more reliable.

If you want lets talk about refactor suggestion or future of the project here.

Thanks for your attention bro.

perak commented 8 years ago

@cyclops24

Thank you for this nice list!

You're right about all... but time I can spend on this (hobby) project is limited, so thing is going slow (and will continue to be slow) :(

Most of code was written in time when I was learning Meteor (my way to learn: create generator! :D), so generated code is far from perfect.

Project somehow survived all MDG's "earthquakes" (from Meteor 0.6 to 1.3) but I am not sure would it survive the next one - too much work for the single man (especially now with Blaze and React in parallel).

If I open the source, that will require significant amount of my time for review/test/merge etc. code and keep project moving in the right direction. I'll end in the same problem (maybe worst). Also, kitchen-CLI is written in C++ which additionally complicates things (not very popular in this JavaScript oriented community).

Maybe it's time to find some funding, assemble the team of (paid) developers and make awesome development tool from this project - something between webflow and ionic creator (actually I am already doing that with a new GUI - but again, moving too slow).

This is what I am currently doing:

That's it (in short).

I am always ready to talk, let's keep this thread open.

:+1:

perak commented 8 years ago

BTW, I cannot post link to new GUI. It exposes user profiles and all their kitchen projects (users will have option to choose what to keep private before transition to a new GUI).

Here is few screenshots:

screen shot 2016-03-30 at 10 20 31 am screen shot 2016-03-30 at 10 22 43 am screen shot 2016-03-30 at 10 23 38 am screen shot 2016-03-30 at 10 24 15 am

(visual app designer is under construction)

BTW, database shown in screenshots is old. There is 3125 users and 4500 apps at the moment and growing - adding React to "kitchen" makes extra traffic :)

saeedjalalisj commented 8 years ago

Hi,Perak At first I thank for this perfect code generator. I think this issue helps to improve your project. I agree with cyclops24 opinon. and a funny thing I am in this picture :-) 6108a9da-f666-11e5-925a-3d9d8c719574

perak commented 8 years ago

@saeedjalali1 :D :D :D too bad no profile picture! Smile please! :)

P.S. chance to appear here was 3910/8, consider playing LOTTO :+1:

cyclops24 commented 8 years ago

Thanks for participants ( @perak & @saeedjalali1 ) for keep this open.

@perak new UI is very awesome and beautiful but for me CLI is more important :+1: because many things need port to react and more work and issue still open there.

Ok this is my new suggestion that I think maybe useful based on your talks: Because of that kitchen-cli was based on C++ I suggest to create kitchen parts independent as a meteor modules (like as you done for perak:roles or perak:join package for kitchen roles and join functionality rather than hard code that in generated app) with this approach we take these advantage:

  1. Other meteor community also can use some part of kitchen as a standalone package.
  2. We can update some part of generated app with a simple package update (for example for me multilingual is important if DataView available as a meteor package I can fork that and translate resource then I simply change my package for example from perak:kitchen-dataview to cyclops24:kitchen-dataview)
  3. Now I generate app and then polish them by hand (translate pages and change some form and code) but after sometimes you release new version that fix some bug or new feature but I can't regenerate my project because I done many changes because of this I forced to wait using new features in my next meteor project and my old projects can't use new kitchen advantage. But if kitchen parts available as a meteor package I can update many parts without breaking.

With this approach after some times we have:

(I think need to say that you are the owner of this awesome project and this is my personal opinion please do not upset from me friend :wink: )

cyclops24 commented 8 years ago

And @perak I also suggest see aldeed:tabular I think it's a good alternative for DataView also you can mix them with matteodem:easy-search for beautiful and configurable search functionality. (aldeed:tabular also support I18N for multilingual and also bootstrap theme, sort, pagination and other useful things).

You can also use aldeed:autoform rather than current form component because when you able to create schema why not use simple one line autoform form generation??

With using these packages and deprecate some part of kitchen like DataView and Form components you also have more time for spend in other more important parts (for example react).

From the other hand for react you can use reusable components from here.

xauxatz commented 8 years ago

I fully support you looking for funding and assembling a team. I think the project has a lot of commercial value and should be able to attract serious funding.

perak commented 8 years ago

@cyclops24 @saeedjalali1 @xauxatz thank you for suggestions. Most of them are usefull. I'll add milestones when I find some free time). :+1:

perak commented 8 years ago

BTW, what do you think about this CLI feature:

I plan to implement generator hooks - for each action it performs to call external (node).js file. For example: onCreateDirectoryStructure, onCreateRoute, onCreatePublication, onCreatePage etc. with all required arguments to perform action from your js. Inthat case you'll be able to override code that kitchen generates.

Comments?

saeedjalalisj commented 8 years ago

Hi, @perak I think this feature is very very very very nice :+1: I agree with you. I thank you very much for this feature

xauxatz commented 8 years ago

Very very good idea. One of the main problems that I often spend a significant amount of time on is to figure out how to override auto-generated code.

On 4/3/2016 9:25 AM, Petar Korponaić wrote:

BTW, what do you think about this CLI feature:

I plan to implement generator hooks - for each action it performs to call external (node).js file. For example: onCreateDirectoryStructure, onCreateRoute, onCreatePublication, onCreatePage etc. with all required arguments to perform action from your js. Inthat case you'll be able to override code that kitchen generates.

Comments?

— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/perak/kitchen-site/issues/270#issuecomment-204897928

kjetilge commented 8 years ago

Nice!

cyclops24 commented 8 years ago

@perak, Woooooow, It's so good. I also needs this many times. Always repetitive task needs after code generation.