public
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Project Plan and ToDos 0.1 Preparation -Purpose -Goals / Objectives -Audience -Estimated time frame -Resources - have and lack 1.0 - Kick Off + Roles --Copy --Web dev --Design (web and assets) --SEO --Dev Ops --Review QA -Set up blog https://www.google.com/search?q=adding+a+blog+to+a+node.js+express+site+markdown&client=firefox-b-1-d&sxsrf=ALeKk02aziMvnmZMMBGjBDNWYxWD45iGog%3A1625851034270&ei=moToYJ_bD8fR5NoPy4OQiAM&oq=adding+a+blog+to+a+node.js+express+site+markdown&gs_lcp=Cgdnd3Mtd2l6EAM6BwgAEEcQsANKBAhBGABQ5bkBWPLDAWCjxwFoAXACeACAAYEBiAHoBpIBAzYuM5gBAKABAaoBB2d3cy13aXrIAQjAAQE&sclient=gws-wiz&ved=0ahUKEwifkOuKv9bxAhXHKFkFHcsBBDEQ4dUDCA0&uact=5 markdown -> html https://www.smashingmagazine.com/2019/04/nodejs-express-api-markdown-html/ +Sitemap https://stackoverflow.com/questions/37194630/how-to-generate-a-sitemap-in-expressjs/58241886 * Site Map - Site architecture (pages) *Copy / SEO *Dev components (JS) *SCSS elements Dart Sass implementation https://www.devextent.com/dart-sass-javascript-implementation-npm-compile-sass/ Boot up app debug=do2:* npm start responsive menu https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_mobile_navbar app.js old const createError = require('http-errors'); const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const exphbs = require('express-handlebars'); const { body,validationResult } = require('express-validator/check'); const { sanitizeBody } = require('express-validator/filter'); const sassMiddleware = require('node-sass-middleware'); const favicon = require('serve-favicon'); const dotenv = require('dotenv').config(); // unused modules const nodemailer = require('nodemailer'); const la = require('@toptensoftware/losangeles'); const indexRouter = require('./routes/index'); const aboutRouter = require('./routes/about') const usersRouter = require('./routes/users'); const workRouter = require('./routes/work'); const projectsRouter = require('./routes/projects'); const blogRouter = require('./routes/blog'); const app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); // register helpers var hbs = exphbs.create({ helpers: { now: function (now) { return new Date(now); }, sayHello: function () { alert("Hello World") }, getStringifiedJson: function (value) { return JSON.stringify(value); }, random_num: function () { Math.round(Math.random() * 10)} }, defaultLayout: 'main', partialsDir: ['views/partials/'] }); // Register Handlebars view engine app.engine('.hbs', exphbs({defaultLayout: 'default', extname: '.hbs'})); // Use Handlebars view engine app.set('view engine', '.hbs'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); // false = querystring and true = qs libs app.use(cookieParser()); app.use(sassMiddleware({ src: path.join(__dirname, 'public'), dest: path.join(__dirname, 'public'), indentedSyntax: false, // true = .sass and false = .scss sourceMap: true })); app.use(favicon(path.join(__dirname,'public','images','favicon.ico'))); // Serve static assets from public // app.use(express.static(path.join(__dirname, 'public'))); app.use(express.static(path.join('public'))); // Serve static assets from non-root routes /* app.use('/', express.static(__dirname + '/public')); */ app.use('/work', express.static(__dirname + '/public')); app.use('/projects', express.static(__dirname + '/public')); app.use('/about', express.static(__dirname + '/public')); // Debugging path problem app.use("/public", express.static(path.join(__dirname, 'public'))); app.use('/', indexRouter); app.use('/about', aboutRouter); app.use('/users', usersRouter); app.use('/work', workRouter); app.use('/projects', projectsRouter); app.use('/blog', blogRouter); app.post('/submit-form', [ body('name').isLength({ min: 3 }), body('email').isEmail(), body('msg').isNumeric() ], (req, res) => { const errors = validationResult(req) if (!errors.isEmpty()) { return res.status(422).json({ errors: errors.array() }) } const name = req.body.name const email = req.body.email const message = req.body.msg }) app.post('/submit-form', function (req, res) { //const username = req.body.username //... console.log(req.body); // res.send(req.body); - sends json data res.send("Thank you for sending us a message!") }); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error', {layout: 'error', bodyClass: 'error', title: 'Error'}); }); // start server app.listen(5000, function(err) {}) module.exports = app; Accessibility https://www.w3.org/TR/wai-aria-1.1/