{"id":14975725,"url":"https://github.com/georgiancollege/express-mvc","last_synced_at":"2026-03-05T10:31:10.316Z","repository":{"id":175122293,"uuid":"653196904","full_name":"GeorgianCollege/express-mvc","owner":"GeorgianCollege","description":"This repo is for the @georgiancollege/express-mvc npm module","archived":false,"fork":false,"pushed_at":"2024-02-15T22:10:38.000Z","size":1836,"stargazers_count":0,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-11T02:17:57.681Z","etag":null,"topics":["api","authentication","expressjs","jwt","mongoosejs","nodejs","passportjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GeorgianCollege.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-13T15:26:17.000Z","updated_at":"2023-06-19T20:41:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"c9474810-dd88-4d07-9ab8-d730f6ddd08c","html_url":"https://github.com/GeorgianCollege/express-mvc","commit_stats":{"total_commits":40,"total_committers":2,"mean_commits":20.0,"dds":"0.025000000000000022","last_synced_commit":"320297236e779c9099f74dbe5cfbbe2e2ad1028f"},"previous_names":["georgiancollege/express-mvc"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeorgianCollege%2Fexpress-mvc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeorgianCollege%2Fexpress-mvc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeorgianCollege%2Fexpress-mvc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeorgianCollege%2Fexpress-mvc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeorgianCollege","download_url":"https://codeload.github.com/GeorgianCollege/express-mvc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241110776,"owners_count":19911394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","authentication","expressjs","jwt","mongoosejs","nodejs","passportjs"],"created_at":"2024-09-24T13:52:27.007Z","updated_at":"2026-03-05T10:31:09.928Z","avatar_url":"https://github.com/GeorgianCollege.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @georgiancollege/express-mvc\nThis package uses a **MVC (Model-View-Controller)** design pattern for the site structure.\n\nIt was designed for students at **Georgian College** (https://www.georgiancollege.ca/) but is publicly available.\n\n\u003cbr\u003e\n\n## Technologies used:\n- NodeJS (https://nodejs.org/en)\n- Express (https://expressjs.com/)\n- TypeScript (https://www.typescriptlang.org/)\n- Bootstrap (https://getbootstrap.com/)\n- Font Awesome (https://fontawesome.com/)\n- Mongoose (https://mongoosejs.com/)\n- Passport (https://www.passportjs.org/)\n- JWT (https://jwt.io/)\n\n\u003cbr\u003e\n\n## Installation:\n---\n```\nnpm i @georgiancollege/express-mvc -g\n```\n\n\u003cbr\u003e\n\n## Usage:\n---\n```\n\u003e express-mvc \u003coptions\u003e [folder]\n```\n\n- where **options** is installation options and **folder** is the installation folder. \n\n- if installation folder is **not** specified, then the express mvc site structure is scaffolded in the current folder.\n### Current Installation Options:\n---\n- ```--api - scaffold an Express api that does not include views```\n- ```--auth - adds authentication```\n- ```--tsc - provide TypeScript support```\n- ```--hbs - uses handlebars view engine```\n\n- the default is a **JavaScript** MVC with no Authentication\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Post Installation:\n- you will need to issue the following command to install the module dependencies:\n\n```\n\u003e npm install \n```\n\n- if you are using the TypeScript version you will need to transpile the ```.ts``` files to ```.js``` as Node and Express require JavaScript:\n\n```\n\u003e npm run build\n```\n\n\u003cbr\u003e\n\n## MVC Site Structure (JavaScript version):\n---\n```\nexpress-mvc-js\n├── Client\n│   ├── Assets\n│   │   └── images\n│   │       └── .gitkeep\n│   ├── Content\n│   │   └── app.css\n│   └── Scripts\n│       └── app.js\n├── Server\n│   ├── Config\n│   │   └── app.js\n│   ├── Controllers\n│   │   └── index.js\n│   ├── Models\n│   │   └── user.js\n│   ├── Routes\n│   │   └── index.js\n│   └── Views\n│       ├── error.ejs\n│       └── index.ejs\n├── .env\n├── .gitignore\n├── package.json\n└── server.js\n```\n---\n### Notes:\n- The **JavaScript** version uses the CommonJS module pattern (i.e., **```require```** statements)\n\n\u003cbr\u003e\n\n## MVC Site Structure (JavaScript version with handlebars):\n---\n```\nexpress-mvc-js-hbs\n├── Client\n│   ├── Assets\n│   │   └── images\n│   │       └── .gitkeep\n│   ├── Content\n│   │   └── app.css\n│   └── Scripts\n│       └── app.js\n├── Server\n│   ├── Config\n│   │   └── app.js\n│   ├── Controllers\n│   │   └── index.js\n│   ├── Models\n│   │   └── user.js\n│   ├── Routes\n│   │   └── index.js\n│   └── Views\n│       ├── error.hbs\n│       ├── index.hbs\n│       └── layout.hbs\n├── .env\n├── .gitignore\n├── package.json\n└── server.js\n```\n---\n### Notes:\n- The **JavaScript with handlebars** version uses the CommonJS module pattern (i.e., **```require```** statements)\n\n\u003cbr\u003e\n\n## MVC Site Structure (TypeScript version):\n---\n```\nexpress-mvc-tsc\n├── Client\n│   ├── Assets\n│   │   └── images\n│   │       └── .gitkeep\n│   ├── Content\n│   │   └── app.css\n│   └── Scripts\n│       └── app.ts\n├── Server\n│   ├── Config\n│   │   └── app.ts\n│   ├── Controllers\n│   │   └── index.ts\n│   ├── Models\n│   │   └── user.ts\n│   ├── Routes\n│   │   └── index.ts\n│   └── Views\n│       ├── error.ejs\n│       └── index.ejs\n├── .env\n├── .gitignore\n├── package.json\n├── server.ts\n└── tsconfig.json\n```\n---\n### Notes:\n- The **TypeScript** version uses the **esm module pattern** (i.e., **```import```** and **```export```** statements)\n\n\u003cbr\u003e\n\n## MVC Site Structure (TypeScript version with handlebars):\n---\n```\nexpress-mvc-tsc-hbs\n├── Client\n│   ├── Assets\n│   │   └── images\n│   │       └── .gitkeep\n│   ├── Content\n│   │   └── app.css\n│   └── Scripts\n│       └── app.ts\n├── Server\n│   ├── Config\n│   │   └── app.ts\n│   ├── Controllers\n│   │   └── index.ts\n│   ├── Models\n│   │   └── user.ts\n│   ├── Routes\n│   │   └── index.ts\n│   └── Views\n│       ├── error.hbs\n│       ├── index.hbs\n│       └── layout.hbs\n├── .env\n├── .gitignore\n├── package.json\n├── server.ts\n└── tsconfig.json\n```\n---\n### Notes:\n- The **TypeScript with handlebars** version uses the **esm module pattern** (i.e., **```import```** and **```export```** statements)\n\n\u003cbr\u003e\n\n## API Site Structure (JavaScript version):\n---\n```\nexpress-mvc-api-js\n├── Server\n│   ├── Config\n│   │   ├── app.js\n│   │   └── db.ts\n│   ├── Controllers\n│   │   └── movie.js\n│   ├── Models\n│   │   └── movie.js\n│   └── Routes\n│       └── index.js\n├── .env\n├── .gitignore\n├── movies.json\n├── package.json\n└── server.js\n```\n\n\u003cbr\u003e\n\n## API Site Structure (TypeScript version):\n---\n```\nexpress-mvc-api-tsc\n├── Server\n│   ├── Config\n│   │   ├── app.ts\n│   │   └── db.ts\n│   ├── Controllers\n│   │   └── movie.ts\n│   ├── Models\n│   │   └── user.ts\n│   └── Routes\n│       └── index.ts\n├── .env\n├── .gitignore\n├── movies.json\n├── package.json\n├── server.ts\n└── tsconfig.json\n```\n---\n### Notes:\n- We've include an example **Movie Model** that assumes you will be using **```mongoose```** to connect to **MongoDB**\n\n\u003cbr\u003e\n\n## API Site Structure (JavaScript version) includes JWT Authentication:\n---\n```\nexpress-mvc-api-auth-js\n├── Server\n│   ├── Config\n│   │   ├── app.js\n│   │   └── db.ts\n│   ├── Controllers\n│   │   ├── auth.js\n│   │   └── movie.js\n│   ├── Models\n│   │   ├── movie.js\n│   │   └── user.js\n│   ├── Routes\n│   │   ├── auth.js\n│   │   └── index.js\n│   └── Util\n│       └── index.js\n├── .env\n├── .gitignore\n├── movies.json\n├── package.json\n└── server.js\n```\n\n\u003cbr\u003e\n\n## API Site Structure (TypeScript version) includes JWT Authentication:\n---\n```\nexpress-mvc-api-auth-tsc\n├── Server\n│   ├── Config\n│   │   ├── app.ts\n│   │   └── db.ts\n│   ├── Controllers\n│   │   ├── auth.ts\n│   │   └── movie.ts\n│   ├── Models\n│   │   ├── movie.ts\n│   │   └── user.ts\n│   ├── Routes\n│   │   ├── auth.ts\n│   │   └── index.ts\n│   └── Util\n│       └── index.ts\n├── .env\n├── .gitignore\n├── movies.json\n├── package.json\n├── server.ts\n└── tsconfig.json\n```\n---\n### Notes:\n\n- Uses JWT Authentication","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgiancollege%2Fexpress-mvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorgiancollege%2Fexpress-mvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgiancollege%2Fexpress-mvc/lists"}