Giter VIP home page Giter VIP logo

app-generator / appseed-v2 Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 1.0 4.32 MB

AppSeed - The New Core | Work In Progress

Home Page: https://app-generator.dev

License: Other

Dockerfile 0.06% Shell 0.08% Python 26.75% JavaScript 3.17% CSS 0.86% HTML 69.09%
ai-generator app-generator appseed code-generator django-generator generate-code generator-api generator-data generator-datasets python-generator

appseed-v2's Introduction

The new version of AppSeed - Generate Digital Products, Update legacy code by chat, Inject new modules, Software Auto-healing, AI, Deployment automation (any provider), Docker, K8s.

๐Ÿ‘‰ LIVE Demo: https://app-generator.dev


Features

  • One-Click Sign IN: GitHub
  • Marketplace: mirrored from AppSeed
  • Generator:
    • MVC: Django, NodeJS, Flask, FastAPI
    • Full-Stack: React, Vue with any API Backend
    • API [ manage visually the data ]
    • eCommerce
    • Website
  • Deployment options: Render, AppSeed Cloud Digital Ocean, User Provider (AWS, DO, Azure)
  • Developer Tools
    • AI introspection to different data sources
    • CSV processing and data extraction
    • CSV to model
  • Sections:

SPECS


For more input please contact support using the following:


Stack

  • Python/Django
  • React
  • Docker
  • CI/CD - LIVE Deploy on Digital Ocean

Manual Build

Download the code

$ git clone https://github.com/app-generator/appseed-v2.git
$ cd appseed-v2

Install modules via VENV

$ virtualenv env
$ source env/bin/activate
$ pip install -r requirements.txt

Set Up Database

$ python manage.py makemigrations
$ python manage.py migrate

Start the APP

$ python manage.py createsuperuser # create the admin
$ python manage.py runserver       # start the project

At this point, the app runs at http://127.0.0.1:8000/.


Compile DOCS

The Documentation being generated by , the compilation requires a linux box

$ cd docs && rm -rf build && make html

The output is saved on


Celery (async tasks)

  • Make sure you have a Redis Server running: redis://localhost:6379
    • $ redis-cli and type ping
  • In the base directory inside tasks_scripts folder you need to write your scripts file.
  • Run the celery command from the CLI.
$ export DJANGO_SETTINGS_MODULE="core.settings"  
$ celery -A core worker -l info -B

Executed Tasks, tasks_scripts DIR as defined in the EXEC Schedule

The output for each task can be found in the LOGS Directory.

Here is a LOG sample generated by a critical task that runs at every 5min:


CLI

Once the VENV is activated, we can use the console to interact with the codebase:

List available commands

$ python manage.py help 
(Truncated Output)
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
...
[cli]
    build_docs
    cmd_apps
    cmd_models
    cmd_showcfg
...

Generate DOCS

$ python manage.py build_docs

List Registered Apps

$ python manage.py cmd_apps
(Truncated Output)
 APP -> Webpack Loader
 APP -> Administration
 APP -> Authentication and Authorization
 ...

List Registered Models

$ python manage.py cmd_models
(Truncated Output)
 APP -> Administration
         |- (model) -> <class 'django.contrib.admin.models.LogEntry'>
 APP -> Authentication and Authorization
         |- (model) -> <class 'django.contrib.auth.models.Permission'>
         |- (model) -> <class 'django.contrib.auth.models.Group'>
         |- (model) -> <class 'django.contrib.auth.models.User'>

print Configuration

$ python manage.py cmd_showcfg
(Truncated Output)
 Cfg Key: INSTALLED_APPS -> ['webpack_loader', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'cli', 'apps.common', 'apps.pages', 'apps.users', 'apps.blog', 'debug_toolbar', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.google', 'django_quill']
 Cfg Key: DEBUG -> True
 Cfg Key: USE_TZ -> True
 Cfg Key: ROOT_URLCONF -> core.urls
 Cfg Key: MEDIA_ROOT -> D:\work\appseed-v2\media
 Cfg Key: APPEND_SLASH -> True
 Cfg Key: STATICFILES_FINDERS -> ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
 Cfg Key: STATICFILES_DIRS -> D:\work\appseed-v2\static
 Cfg Key: STATIC_ROOT -> D:\work\appseed-v2\staticfiles  

Team

Core

Developers/Contractors


LICENSE

@EULA



Crafted and released under the AppSeed brand by Sm0ke

appseed-v2's People

Contributors

app-generator avatar hasib-helios avatar mominur-helios avatar mysecondlanguage avatar sgnd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

dedicatedcloud

appseed-v2's Issues

Categories - APPS

The information is generated based on the products data

Routes:

  • apps/ -> index
  • apps/django/
  • apps/flask/
  • apps/react/

We can detect the type of product based on the Product fields:

  • type -> WEBAPP
  • tech1 -> backend
  • tech2 -> frontend

@mominur-helios please take a look.

TY!

Company - Profile

The user will have the possibility to elevate his account to a company one.

The effects:

  • all account purchases are shared with the team members
  • This can manage the team members:
  • invite registered users
  • accept/deny join requests
  • remove a team member
  • each team member can have job type:
    • Developer
    • Team Leader
    • Designer
    • DevOps
    • Architect
  • The company profile can add projects to their portfolio. Each project has the following properties:
    • name
    • description - Quill
    • technologies: pills like react, python, django, flask, node, .. etc
    • LIVE Demo (optional)
  • Access the search page [ private page ] and locate freelancers

The user can change his account type anytime from a basic account to the company (this will change in the future, but for now, we keep this)

When the user switches back to the basic account the following information needs to be deleted:

  • team member association
  • company portfolio

@mominur-helios please take a look.

TY!

Categories - ADMIN-Dashboards

The information is generated based on the products data

Routes:

  • admin-dashboards/ -> index
  • admin-dashboards/django/
  • admin-dashboards/flask/
  • admin-dashboards/react/

We can detect the type of product based on the Product fields:

  • type -> DASHBOARD
  • tech1 -> backend
  • tech2 -> frontend

@mominur-helios please take a look.

TY!

SIDEBAR - Company Profile

The items

  • Profile
  • My Downloads [ data table with all downloaded products ]
    • free
    • PAID
  • Project Management
    • Teams
      • Create Team Button on the top left
      • My teams - data table
      • Edit team [ separate page ]
        • Manager can share any item from "My Downloads"
    • Projects
      • Create project Button on the top left
      • My Projects - data table
    • Browse Freelancers
      • Invite freelancers
        • A freelancer can be invited to many projects
          • Can be designer in a project and tested in another project
  • Blog
    • Create Articles
    • My Articles
    • Bookmarked
  • Support
    • Create Ticket
    • My Tickets [ all tickets ] created by the user

@mominur-helios please take a look

TY!

Integrate Termino.js in HOMEpage

The HOMEpage needs to provide to all users a terminal where they can write commands.

For this, Termino.js migth be a good fit.

The custom commands that needs to be implemented are:

  • help
  • show_dashboards()

The content is pulled from the API using a get and the response will create the product cards below the prompt.

All links in the cards are using target="_blank" in order to keep the prompt active.

@mominur-helios please take a look.

TY!

User / Company [PRO Account]

Items for a free user

  • My profile page
    • Public profile option
    • Switch to Company option
  • Downloads
    • Free
    • Paid
  • Project Management
    • My projects
    • Invitations
  • Blog
    • Create article
      • Canonical URL allowed
    • My Articles
    • Bookmarked
  • Support
    • Create Ticket
      • Priority: HIGH (3h response)
    • My Tickets

Company

The same as for the user, plus:

  • Project Management menu
    • Browse freelancers - unlimited results
    • Unlimited Teams
    • Unlimited Projects

@mominur-helios please take a look.

TY!

Support Tickets System

Registered users can open support tickets.

Here is the flow:

  • The guest user clicking on Open a Support Ticket is invited to signIN
  • Authenticated users are able to open support tickets
  • New ticket properties:
    • Select Type [Combo 1]
      • Product Assistance -> new combo becomes visible with ALL products
      • Platform -> New combo becomes visible with options
        • Purchases
        • Authentication
      • Suggest Feature
    • Title
    • Description

By default the state is OPEN. The superusers can operate on the ticket, reply, and change state. Allowed states are:

  • OPEN - feedback is needed from AppSeed stuff
  • ANSWERED - the client was assisted
  • CLOSED - the ticket is closed

The super user dashboard will have a menu item for this flow, filters & search.

@mominur-helios please take a look.

TY!

Profile - Public Visibility

The Public profile checkbox needs to be unchecked by default.

Once checked, the effects are:

  • Public page with URL:
    • /profile/github-GITHUB-USERNAME that provides:
      • GitHub Username
      • GitHub Avatar
      • Skills
      • BIO

Also, being a public profile, companies can discover it in search.

@mominur-helios please take a look.

TY!

Blog Article - Improvements

The blog article page needs to be improved:

  • Thumbnail in place saving - just like invat_eu
  • added NEW field - video
    • the same as for invat_eu -> events
    • once the link is added, the video is automatically embedded into the page

@mominur-helios please take a look.

TY!



Create Article - Add Cover

image



Create Article - Cover Added

image



Create Article - Add Video LINK

image


Create Article - Video Added

image

Free Product - Price & Payment URLs are optional

Changes for product page:

  • For free products, the price and payment URLs are optional
  • Free Prodyct Check Box needs to be positioned below Slug
  • Free Prodyct by default = Checked
  • By default Prices & Payments are not shown
  • Once the user clicks on Free product and makes it Paid the Prices & Payments Links are showed
  • Code - needs to be a unique UUID - generated at load time
  • Downloads are not editable -> Will be a counter managed in other places
  • We need a new field -> Related product
    • Combo with existing Products - helps to link a free to PAID one
  • Thumb image if not specified it will be used from MEDIA using pattern
    • design
    • backend

@mominur-helios please take a look.

TY!

Company - Create Team

The team is a group of human resources. The button Create Team allows creating a team, using the fields:

  • Team Name (mandatory)
  • Project -> link existing project

Once the empty team is created, the company is able to invite freelancers to the team. For this, we need a new feature for companies only:

Browse Freelancers menu item (below projects)

  • dataTables view
  • Filters:
    • backend framework
    • frontend
    • CSS framework
    • Deployment

On click, the company can:

  • Invite to project and assign a team role: designer, developer, architect
    • the freelancer will receive this invitation with the role assigned
      • he can accept or reject
  • Bookmark the profile [ for later invitations ]

@mominur-helios please take a look.

TY!

Products Likes System

Users can like / unlike the product

Here is the flow:

  • The guest user clicking on Like Product is invited to signIN
  • Authenticated users are able to like/unlike a product
  • For this we need two counters:
    • linked to the user & and product - always == 1
    • linked to the product (likes from all users)

When unlike:

  • the counter for the user & product is deleted
  • the product counter is decreased by 1.

@mominur-helios please take a look.

The superuser dashboard will have a menu item for this flow, filters & search.

  • most liked products
  • most like backends
  • most liked tools .. etc

@mominur-helios please take a look.

TY!

[HIGH] User Dashboard

The user dashboard needs to be mirrored from Rocket Django using items:

  • Profile, using the usual fields:
    • name,
    • GitHub email [ pulled from GitHub ] read-only
    • Email (optional) used for newsletter and other notifications
  • Connected Accounts
    • GitHub [ default via SignIN ]
    • Digital Ocean (optional) for deployments
    • Google Drive (optional) for inputs
  • Settings
    • newsletter: default OFF

Products QA System

Authenticated users are able to ask questions regarding a product

This is different from the support system and aims to extract a useful and specific QA section for each product.

Here is the flow:

  • The guest user clicking on Ask a Question is invited to signIN
  • Authenticated users are able to ask a question
  • SUPERUSER provides an answer
  • SUPERUSER can mark question to be public
  • Public questions are added to the product page in the Q&A Section

By default the state is OPEN. The superusers can operate on the ticket, reply, and change state. Allowed states are:

  • OPEN - feedback is needed from AppSeed stuff
  • CLOSED - the question was answered

The superuser dashboard will have a menu item for this flow, filters & search.

@mominur-helios please take a look.

TY!

Blog Section - Flow Update

Each user needs to have a new field attached that decides his quality as an editor:

  • trusted_editor -> default False

When a new article is created, the article goes LIVE or remains draft based on trusted_editor field:

  • for TRUSTED editors, the article goes LIVE
  • for UNTRUSTED editors, the article remains draft

ADMIN can:

  • make an user trusted / untrusted
  • publish an article by changing the state from draft -> published.

@mominur-helios please take a look.

TY!

DOCS Section - Remove HTML suffix

Hello @sgnd

The DOCS section (only DOCS) URI needs to be improved by replacing the .html suffix with a / (slash)

The current URI: https://app-generator.dev/docs/django/dattaable.html

The needed change: https://app-generator.dev/docs/django/dattaable/

Please take a look.

TY!

DOCS - The two level items, routing, categs pages ...

Hello @mominur-helios

Please implement the following DOCS items:

  • Index -> URI /docs/
  • products -> URI /docs/products/
    • django -> URI /docs/products/django/
      • datta-able -> URI /docs/products/django/datta-able/
    • flask -> URI /docs/products/flask/
      • rocket -> URI /docs/products/flask/rocket/

use dummy information for each page:

  • Django Datta Able: title, dummy description, 2 links [ demo & product page ]
  • Rocket Flask: : title, dummy description, 2 links [ demo & product page ]

What we need to check extra:

  • How to set content for the categories:
    • products
    • products/django
  • How to refer content:
    • From flask -> rocket refer page django data-able

I'm pretty sure this is supported by Sphinx.

Please take a look, TY!

Seeder Needed

A seeder needs to be added for:

  • Programming Languages
  • Frameworks
  • Deployment
  • No/Code Platforms

Once coded, needs to be integrated into build.sh - each time it runs, the old values are deleted.

@mominur-helios please take a look.

TY!

image

SIDEBAR - Superuser

The items

  • Profile
  • Downloads
    • Data table with all downloaded or purchased projects
  • Products
    • Create Products
    • All Products
  • Support
    • All Tickets
  • Blog
    • All Articles
    • Create Articles
    • My Articles
    • Bookmarked

@mominur-helios please take a look.

TY!

User / Company [FREE Account] - Permissions & Actions

Items for a free user

  • My profile page
    • Public profile option
    • Switch to Company option
  • Downloads
    • Free
    • Paid
  • Project Management
    • My projects
    • Invitations
  • Blog
    • Create article
      • Canonical URL -> New Article field, reserved for PRO - the user is informed and invited to upgrade to PRO
    • My Articles
    • Bookmarked
  • Support
    • Create Ticket
      • Priority: LOW (1 working day)
    • My Tickets

Company

The same as for the user, plus:

  • Project Management menu
    • Browse freelancers - results limited to 25 results
    • 5 Teams
    • 5 Projects

@mominur-helios please take a look.

TY!

SIDEBAR - Common Users

The items

  • Profile
  • My Downloads [ data table with all downloaded products ]
    • free
    • PAID
  • Project Management
    • My Projects [ invitations accepted ]
    • Invitations [ all invitations ]
      • Project Owner
      • Technologies
      • Status: Accepted / Denied
  • Blog
    • Create Articles
    • My Articles
    • Bookmarked
  • Support
    • Create Ticket
    • My Tickets [ all tickets ] created by the user

@mominur-helios please take a look

TY!

Categories - Based on product data

Based on the product data, the following categories need to be managed:

  • /product/ - return products grouped by tech1, tech2 ..
    • Django Products -> link /product/django/
    • Flask Products -> link /product/flask/
  • /product/django/
    • 3 Free Django products on top
    • 3 PAID Django products
  • /product/flask/
    • 3 Free Flask products on top
    • 3 PAID Flask products

@mominur-helios please take a look.

TY!

DOCS - The Structure (sources and HTML output)

The docs structure needs to follow up this DOCS tree:

ROOT Pages

  • /docs/ -> Index

Products Node

  • /docs/product/ -> Products Index (all technologies)
  • /docs/product/django/ -> Django Products Index
  • /docs/product/django/datta-able/ -> Django Data Able
  • /docs/product/flask/ -> Flask Products Index
  • /docs/product/flask/datta-able/ -> Flask Data Able

Technologies Node

  • /docs/technologies/ -> Technologies Index
  • /docs/technologies/django/ -> Django Technologies Index
  • /docs/technologies/django/install/ -> Learn how to install Django
  • /docs/technologies/flask/ -> Flask Technologies Index
  • /docs/technologies/flask/install/ -> Learn how to install Flask

@MySecondLanguage please take a look at the above. In order to make it intuitive for the users, we need to:

Mirror the above structure in the DOCS/SOURCE Directory

Something like:

  • /docs/source/index.rst -> Index
  • /docs/source/product/index.rst -> Products Index (all technologies)
  • /docs/source/product/django/index.rst -> Django Products Index
  • /docs/source/product/django/datta-able.rst -> Django Data Able

Once we have this structure, we will focus on the styling.

Thanks!

P.S. for inspiration, feel free to take a look at the current AppSeed DOCS [ built with Docusaurus ]

https://docs.appseed.us/products/django-apps/
https://docs.appseed.us/technologies/django/

... etc.

Users - Added Trusted Field

All accounts need a trusted field that allows publishing blog posts without review.

Once a new article is edited, and saved, if the user is trusted or SUPERUSER, article goes to published directly.

@mominur-helios please take a look.

TY!

Default SUPERUSER - App-generator

The user app-generator needs to be superuser [ ADMIN ]

The account app-generator needs to be SUPERUSER (or ADMIN) by default. The permissions:

  • Users
    • list all users
    • delete accounts
    • update permissions [ API, Blog Editor ]
  • Blog Articles
    • list all articles
    • publish content from untrusted editors
    • edit articles

@mominur-helios please find a way to make app-generator by ADMIN default. Might be a good idea to check on registration and set the admin quality on save.

TY!

User PROFILE - Update on Fields

Fields to be removed:

  • City
  • ZipCode
  • Address
  • Phone

New fields

  • Auto-Generated Slug based on the github username
  • Public Profile [ true / false ], default false
  • Skills
    • Programming Languages [ from list ]: Python, Javascript, Ruby ...
    • Frameworks: React, Vue, Django, Flask, NodeJS
    • Deployment: CI/CD, AWS, DO, Azure
    • No-Code: Bubble, Webflow, Retool
  • BIO
    • Quill field

@mominur-helios please take a look.

TY!

HOMEpage CleanUp

The Homepage needs to be simplied to provide:

  • Navigation:
    • Logo -> updated to the current one from AppSeed
    • SignIN [ right ] - for Guest users or Dashboard for authenticated users
    • all other links removed
  • HERO
    • keep it as it is [ we will change the image ]
  • terminal section below
  • terminal query results
  • footer
    • using the current items from AppSeed


image

Blog Article - Edit page

On blog edit, we need the following updates:

  • Video is optional [ needs to be marked on the page as optional )
  • The content editor needs to be higher by default with a minimum of 10 rows
    • just like INVAT.eu

@mominur-helios please take a look.

TY!

Product - Edit Fields & Media

The new product model needs to have an edit form accessible only for the SUPEURSER.

The related media files are saved on disk using the pattern MEDIA/PRODUCTS/design

  • media/products/datta-able

All PNG files can be updated in the EDIT form.

@mominur-helios please take a look.

TY!

Product Page & Related Information

The product will have the following associated properties

Registered users can:

  • Users can like / unlike the product - See #59 for details
  • Ask Questions - See #58 for details
  • Open a Support Ticket - See #57 for details

@mominur-helios please take a look at the above.

TY!

[HIGH] User Dashboard - Settings

A new Node needs to be added below the profile, with a few items

  • Settings
    • Permissions
      • API - True by default
      • Blog Editor - False by default, read-only in UI
    • API
      • KEY
        • generated at registration using UUID
        • The user can regenerate
      • LOGS - data-table with all API usage, empty for now

@mominur-helios For this we need new Permissions Model that will restrict user actions

A possible structure is this:

ID -> (autogenerated)
user_id -> linked to users model
action -> api, blog_editor
permission -> True, False

False is the same thing as not having a row in the table. In other words, if we check permission the logic is this:

  • check if the row exits and permission = True

@mominur-helios please take a look.

Once we have it, the immediate effect is to make the user a trusted editor.

TY!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.