I have a question about reusing parts of the source code and some design patterns.

I am currently in the process of finalizing the designs for a Windows desktop application for bookkeeping, order and stock management and financial reporting, amongst others.

The aim is to develop a project that finally will be brought to the open source community in either a GPL or LGPL license, sometime end 2018. It will be free of charge, open source and with a plugin for nopCommerce, of course.

As I am developing plugins for nopCommerce ever since nopCommerce 3.40 I am heavily influenced by the nopCommerce architecture,its domain models, many of its design patterns, classes and parts of the source code.

In stead of reinventing the wheel I would like to reuse parts of the code and patterns. Not only to speed up the development, but also because it would make the product to be accepted by .Net developers more quickly.

Under what conditions am I allowed to reuse nop patterns, classes and code fragments; and to what extend can I alter them to fit my needs?
Is adherence to the GPL license enough?
Is having references to the nopCommerce community in the used code enough?

I'm excited to move on with the development...

Thanks in advance