Install

  1. Use the application generator tool, express-sweet-generator, to quickly create an application skeleton.
    npm install -g express-sweet-generator
  2. You can check the help with the -h option.
    express-sweet -h
    
      Usage: express-sweet [options] [dir]
    
      Options:
    
            --version      output the version number
        -o, --output <output>  add output <module> support (esm|cjs) (defaults to cjs)
        -p, --port <port>  application listening port (default: 3000)
        -f, --force        force on non-empty directory
        -h, --help         output usage information
  3. Create an Express myapp named myapp.
    The app is created in a folder named myapp in the working directory.
    express-sweet -o esm myapp
  4. Install dependent packages.
    cd myapp
    npm install
  5. This sample application uses a database.
    Execute the following SQL to create the database.
    CREATE DATABASE IF NOT EXISTS `express_sweet_db` DEFAULT CHARACTER SET utf8mb4;
    
    USE `express_sweet_db`;
    
    CREATE TABLE `user` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(30) NOT NULL,
      `email` varchar(255) NOT NULL,
      `password` varchar(100) NOT NULL,
      `icon` varchar(768) NOT NULL DEFAULT MD5(RAND()),
      `created` datetime NOT NULL DEFAULT current_timestamp(),
      `modified` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
      PRIMARY KEY (`id`),
      UNIQUE KEY `ukUserEmail` (`email`),
      UNIQUE KEY `ukUserIcon`(`icon`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE `profile` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `userId` int(10) unsigned NOT NULL,
      `address` varchar(255) NOT NULL,
      `tel` varchar(14) NOT NULL,
      `created` datetime NOT NULL DEFAULT current_timestamp(),
      `modified` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
      PRIMARY KEY (`id`),
      UNIQUE KEY `ukProfileUserId` (`userId`),
      CONSTRAINT `fkProfileUser` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE `comment` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `userId` int(10) unsigned NOT NULL,
      `text` text NOT NULL,
      `created` datetime NOT NULL DEFAULT current_timestamp(),
      `modified` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
      PRIMARY KEY (`id`),
      CONSTRAINT `fkCommentUser` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE `book` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `userId` int(10) unsigned NOT NULL,
      `title` text NOT NULL,
      `created` datetime NOT NULL DEFAULT current_timestamp(),
      `modified` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
      PRIMARY KEY (`id`),
      UNIQUE KEY `ukBookTitle` (`userId`, `title`(255)),
      CONSTRAINT `fkBookUser` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO `user` (`id`, `email`, `password`, `name`, `icon`) VALUES
      (1, 'robin@example.com', 'password', 'Robin', '/upload/1.png'),
      (2, 'taylor@example.com', 'password', 'Taylor', '/upload/2.png');
    INSERT INTO `profile` (`userId`, `address`, `tel`) VALUES
      (1, '777 Brockton Avenue, Abington MA 2351', '202-555-0105'),
      (2, '30 Memorial Drive, Avon MA 2322', '');
    INSERT INTO `comment` (`userId`, `text`) VALUES
      (1, 'From Robin #1'),
      (1, 'From Robin #2'),
      (2, 'From Taylor #1');
    INSERT INTO `book` (`userId`, `title`) VALUES
      (1, 'Beautiful'),
      (1, 'Lose Yourself'),
      (2, 'When Im Gone');
  6. Next, you need to set how the database is connected.
    The database connection method can be set in config/database.js, so change it according to your environment.
    See here for details.
    export default {
      development: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      },
      test: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      },
      production: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      }
    }
    module.exports = {
      development: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      },
      test: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      },
      production: {
        username: 'root',
        password: 'password',
        database: 'express_sweet_db',
        host: 'localhost',
        dialect: 'mariadb'
      }
    }
  7. The DB to be used can be defined individually for each environment.
    Specify the environment in the .env file.
    NODE_ENV=development
  8. Launch the application.
    DEBUG=myapp:* npm start
    set DEBUG=myapp:*
    npm start
    $env:DEBUG='myapp:*'
    npm start
  9. Then load http://localhost:3000/ in your browser to access the app.
    and you should be greeted by the following page.