All Projects → typijs → typijs

typijs / typijs

Licence: MIT license
The Angular CMS Framework for building fully-featured SPA sites powered by NodeJS and MongoDB with TypeScript

Programming Languages

typescript
32286 projects
CSS
56736 projects
HTML
75241 projects
SCSS
7915 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to typijs

Angular Cms
An flexiable, extendable, modular, single CMS app based on Angular, Express, MongoDB
Stars: ✭ 109 (-22.7%)
Mutual labels:  modular, mongoose, dynamic, decorators, expressjs, cms-framework
TvrboReact
Dream starter project: React, Redux, React Router, Webpack
Stars: ✭ 13 (-90.78%)
Mutual labels:  mongoose, decorators, expressjs
Tvrboreact
Dream starter project: React, Redux, React Router, Webpack
Stars: ✭ 13 (-90.78%)
Mutual labels:  mongoose, decorators, expressjs
mindjs
Minimalistic, pure Node.js framework superpowered with Dependency Injection 💡 💻 🚀
Stars: ✭ 17 (-87.94%)
Mutual labels:  modular, expressjs
Generator Api
🚀 Yeoman generator for creating RESTful NodeJS APIs, using ES6, Mongoose and Express
Stars: ✭ 247 (+75.18%)
Mutual labels:  mongoose, expressjs
Builderbook
Open source web application to learn JS stack: React, Material-UI, Next.js, Node.js, Express.js, Mongoose, MongoDB database.
Stars: ✭ 3,015 (+2038.3%)
Mutual labels:  mongoose, expressjs
Netcorecms
NetCoreCMS is a modular theme supported Content Management System developed using ASP.Net Core 2.0 MVC. Which is also usable as web application framework. This project is still under development. Please do not use before it's first release.
Stars: ✭ 165 (+17.02%)
Mutual labels:  modular, cms-framework
restgoose
Model-driven REST API framework using decorators
Stars: ✭ 28 (-80.14%)
Mutual labels:  mongoose, decorators
nodejs-scaffolding
A node.js sample application that demonstrates an architecture for building a complete production API with Node.JS, Express.JS and MongoDB
Stars: ✭ 33 (-76.6%)
Mutual labels:  mongoose, expressjs
MovieGo
A Website implemented using MERN (MongoDB, ExpressJS, ReactJS and NodeJS) stack, which allows users to sign-in/register and book movie tickets online.
Stars: ✭ 26 (-81.56%)
Mutual labels:  mongoose, expressjs
pothole detection
By using this app users can report the potholes on road by clicking a photo via our app and if a pothole is detected by Machine Learning modal then it is saved to our Database from where officials can view the specifics like location,reported by and official can resolve the request.User are notified by email for every update regarding their request
Stars: ✭ 17 (-87.94%)
Mutual labels:  mongoose, expressjs
Bookmarks.dev
Bookmarks and Code Snippets Manager for Developers & Co
Stars: ✭ 218 (+54.61%)
Mutual labels:  mongoose, expressjs
Angular2 Express Mongoose Gulp Node Typescript
AngularJS 2 (Updated to 4.2.0) Mean Stack application which uses Angular2, Gulp, Express, Node, MongoDB (Mongoose) with Repository Pattern Business Layer
Stars: ✭ 201 (+42.55%)
Mutual labels:  mongoose, expressjs
Nest Mean
NestJS Tutorial Repository
Stars: ✭ 250 (+77.3%)
Mutual labels:  mongoose, expressjs
Express Es6 Starter
Starter project for creating a MVC express server with MongoDB
Stars: ✭ 178 (+26.24%)
Mutual labels:  mongoose, expressjs
Amazona
Build Ecommerce Like Amazon By MERN Stack
Stars: ✭ 152 (+7.8%)
Mutual labels:  mongoose, expressjs
search-cities
No description or website provided.
Stars: ✭ 11 (-92.2%)
Mutual labels:  mongoose, expressjs
Forest Express Mongoose
🌱 Express/Mongoose Liana for Forest Admin
Stars: ✭ 145 (+2.84%)
Mutual labels:  mongoose, expressjs
Node Express Mongoose Passport Jwt Rest Api Auth
Node, express, mongoose, passport and JWT REST API authentication example
Stars: ✭ 146 (+3.55%)
Mutual labels:  mongoose, expressjs
serialize
Serializers for typescript based on decorators
Stars: ✭ 14 (-90.07%)
Mutual labels:  decorators, typescript-library

Logo

TypiJS Framework

The CMS Framework for building fully-featured SPA sites
Explore the framework »

Report Bug · Request Feature

TypiJS

The Angular CMS Framework for building fully-featured SPA sites powered by NodeJS and MongoDB with TypeScript.

It includes 4 packages:

  • @typijs/core - provides the decorators, injection tokens, base classes to create content type
  • @typijs/modules - provides the plugged-in module such as Page tree, Block tree, Media..
  • @typijs/portal - provide the UI layout to access editor, admin
  • @typijs/api - provide the apis to manipulate the content data which stored in MongoDB

Built With

Build on top modern stacks with TypeScript

How it work

Let assume you need build the dynamic website, in Angular CMS, we need to breakdown this page to properties, blocks like this

cms-demo-site-breakdown

So thinking of the architecture in which the site which breakdowns to many pages, each page will also breakdowns to blocks and properties. After that we will definite the page types, block types to build the site.

From this idea, in Angular CMS, we will definite the Home Page page type like this

@PageType({
    displayName: "Home Page",
    componentRef: HomeComponent,
    description: "This is home page type"
})
export class HomePage extends PageData {

    @Property({
        displayName: "Logo",
        displayType: UIHint.Input
    })
    logo: string;

    @Property({
        displayName: "Latest Projects Page Root",
        displayType: UIHint.Input
    })
    latestProjectRoot: string;

    @Property({
        displayName: "Highlight Features",
        description: "This is highlight feature will be in banner area",
        displayType: UIHint.ContentArea
    })
    features: Array<any>;

    @Property({
        displayName: "Highlight Portfolios",
        displayType: UIHint.ContentArea,
    })
    portfolios: Array<any>;

    @Property({
        displayName: "Footer",
        displayType: UIHint.ContentArea
    })
    footer: Array<any>;

    @Property({
        displayName: "Footer Text",
        description: "This is footer text to show the copyright",
        displayType: UIHint.Xhtml
    })
    footerText: string;
}

Basically, we have just created the page type with properties: logo, features, portfolios, footer...

Then corresponding to page type, we will create a template (like Html template). In Angular CMS, this template actually is the Angular Component

import { Component } from '@angular/core';
import { CmsComponent } from '@typijs/core';
import { HomePage } from './home.pagetype';

@Component({
    templateUrl: './home.component.html',
})
export class HomeComponent extends CmsComponent<HomePage> {
    constructor() {
        super();
    }
}

Now when create the page with page type of Home Page, the HomeComponent is charge of rending the page's template

So after we done all things above, how to we create a page. In Angular CMS, we have the admin/editor UI to manage all pages like this

How it run

I created a GIF for demo purpose. It's just only 35MB (haha), so be patient for loading please.

In case your device or browser can't load the this gif, there is a video you can see Angular Cms Demo

cms-demo-site

This Admin/Editor UI is build with plug-in architecture

cms-demo-site

Each page you created has the unique friendly SEO URL like /home-page, /home-page/about, /portfolio/article-1...and the page is published, it can be access via those urls

Check it out with other nice features:

Features

  1. Page Types, Page Template, Page Properties
  2. Block Types, Block Template, Block Properties
  3. Media management: Upload multi files (images, doc, pdf, ...), resizing image, drag and drop...
  4. Friendly URL
  5. SEO (using Angular Universal)
  6. Multi site
  7. Modules architecture for extend the Admin UI

and last but most important: the site you build with Angular CMS is actually the Angular App, it mean it is Angular from router, render, .... You will only work with Angular.

However, it still need a storage to store data, right?. Angular CMS uses the API system which was built by ExpressJS (NodeJS framework) and MongoDB (using mongoose as ORM)

Screenshots

The minimal, simple, clear screen for Editor to edit content

cms-demo-site

On page preview

cms-demo-site

Upload media by drag & drop

cms-demo-site

Getting Started

To start the site build with TypiJS, following theses steps

Prerequisites

  • Angular 10.x or higher
  • Node 10.x or higher
  • Express 4.x or higher
  • Typescript 4.1.5
  • MongoDB latest

Quick start

  1. Clone the repo
    git clone https://github.com/typijs/typijs-starter.git
    cd typijs-starter
  2. Under server folder run script
    npm install
    npm run dev
  3. Under client folder run script
    npm install
    npm start
  4. Navigate to http://localhost:4200/typijs/register to create admin user
  5. See how setup site at video https://www.youtube.com/watch?v=PBKFrZ5Qq1Y

Documentation

How to contribute

Before you want to contribute the project, you need set up the local development environment

Setting up your local environment in dev mode

  1. Load our example MongoDB database from the backup file
mongorestore -d vegefoods_v2 resources/db/dump/vegefoods_v2

  1. Go to cms-api folders and run command
    npm install
    npm link
    npm run build
  1. Go to cms-server folder and run commands
    npm install
  1. set up the symlinks between modules as below:
   npm link @typijs/api
  1. Stay under cms-server folder, and run the command
    npm run dev

This command will run script to connect to mongo db, so make sure you have the correct path to your db. For example, you have the db path like as [MonogDB PATH]/data/db

    mongod --dbpath [MongoDB PATH]/data/db

If you are running MongoDB as a service, you can skip this step

  1. Final step, under cms folder, run the command sequentially
    npm install
    ng build core
    ng build modules
    ng build portal
    npm run dev

Make sure you installed Angular CLI with --global

Now you can goto http://localhost:4200 to see the site.

Register an admin account on the admin site

url: http://localhost:4200/typijs/register

Run Angular Universal (SSR) in Dev mode

    npm install
    ng build core
    ng build modules
    ng build portal
    ng build
    ng run cms-demo:server

Copy three folders dist\core, dist\modules and dist\portal into cms\node_modules\@typijs folder then run this script to start Server Site Render

    npm run start:ssr

If there is any change these libs core or modules or portal need to run build for each lib again then run

ng run cms-demo:server

and start server site again

⭐️ Show Your Support

Please give a ⭐️ if this project helped you!

👏 Contributing

If you have any questions or requests or want to contribute to angular-cms, please write the issue or give me a Pull Request freely.

🐞 Bug Report

If you find a bug, please report to us opening a new Issue on GitHub.

Versioning

We are current on Alpha version

Authors

Acknowledgments

📝 License

This project is MIT licensed.

MIT License

Copyright (c) 2019 Daybrush

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].