Download PDF Modern full-stack development: using typescript, react, node.js, webpack, and docker za

Page 1


Modern Full-Stack Development: Using TypeScript, React, Node.js, Webpack, and Docker Zammetti

Visit to download the full and correct content document: https://textbookfull.com/product/modern-full-stack-development-using-typescript-react -node-js-webpack-and-docker-zammetti/

More products digital (pdf, epub, mobi) instant download maybe you interests ...

Biota Grow 2C gather 2C cook Loucas

https://textbookfull.com/product/biota-grow-2c-gather-2c-cookloucas/

Full Stack React Projects Modern web development using React 16 Node Express and MongoDB 2nd Edition Shama Hoque

https://textbookfull.com/product/full-stack-react-projectsmodern-web-development-using-react-16-node-express-andmongodb-2nd-edition-shama-hoque/

The Complete Developer: Master the Full Stack With TypeScript, React, Next.js, MongoDB, and Docker 1st Edition Martin Krause

https://textbookfull.com/product/the-complete-developer-masterthe-full-stack-with-typescript-react-next-js-mongodb-anddocker-1st-edition-martin-krause/

Practical React Native: Build Two Full Projects and One Full Game using React Native 1st Edition Frank Zammetti

https://textbookfull.com/product/practical-react-native-buildtwo-full-projects-and-one-full-game-using-react-native-1stedition-frank-zammetti/

React Architect Full Stack React App Development and Serverless Deployment Frank Zickert

https://textbookfull.com/product/react-architect-full-stackreact-app-development-and-serverless-deployment-frank-zickert/

Mastering Full Stack React Web Development 1st Edition Tomasz Dyl

https://textbookfull.com/product/mastering-full-stack-react-webdevelopment-1st-edition-tomasz-dyl/

Pro MERN Stack: Full Stack Web App Development with Mongo, Express, React, and Node Vasan Subramanian

https://textbookfull.com/product/pro-mern-stack-full-stack-webapp-development-with-mongo-express-react-and-node-vasansubramanian/

Pro MERN Stack: Full Stack Web App Development with Mongo, Express, React, and Node 2nd Edition Vasan Subramanian

https://textbookfull.com/product/pro-mern-stack-full-stack-webapp-development-with-mongo-express-react-and-node-2nd-editionvasan-subramanian/

Pro MERN Stack: Full Stack Web App Development with Mongo, Express, React, and Node 1st Edition Vasan Subramanian (Auth.)

https://textbookfull.com/product/pro-mern-stack-full-stack-webapp-development-with-mongo-express-react-and-node-1st-editionvasan-subramanian-auth/

Frank Zammetti

Modern Full-Stack Development

Pottstown, PA, USA

ISBN-13 (pbk): 978-1-4842-5737-1

https://doi.org/10.1007/978-1-4842-5738-8

Copyright © 2020 by Frank Zammetti

ISBN-13 (electronic): 978-1-4842-5738-8

This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed.

Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.

The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights.

While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein.

Managing Director, Apress Media LLC: Welmoed Spahr

Acquisitions Editor: Louise Corrigan

Development Editor: James Markham Coordinating Editor: Nancy Chen

Cover designed by eStudioCalamar

Cover image designed by Ekrulila from Pexels

Distributed to the book trade worldwide by Springer Science+Business Media New York, 1 New York Plaza, New York, NY 10004. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.

For information on translations, please e-mail rights@apress.com, or visit http://www.apress.com/ rights-permissions.

Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.

Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484257371. For more detailed information, please visit http://www.apress.com/source-code.

Printed on acid-free paper

Dedicated to Traci, Andrew, and Ashley – the only people I want to share a shed in the woods with when the zombies come! (Okay, maybe not the “only” ones… but they get the good canned beans.)

About the Author

Frank Zammetti is an application architect for a major financial firm with nearly 25 years of professional experience (plus almost 15 years of nonprofessional experience before that). He is an author of, including this one, 12 technical books for Apress. Frank has also authored over two dozen certification exams for SHL as well as several independent articles for various publications. He is also a fiction author (shameless plug: look him up on Amazon if you like sci-fi) and a musician of some renown (and here, “some” should be taken to mean very little). Frank has been married for 25 years (to the same woman even!) and they have two children together.

About the Technical Reviewer

Kenneth Fukizi is a software engineer, architect, and consultant with experience in coding on different platforms internationally. Prior to dedicated software development, he worked as a lecturer for a year and was then head of IT in different organizations. He has domain experience working with technology for companies in a wide variety of sectors. When he’s not working, he likes reading up on emerging technologies and strives to be an active member of the software community.

Acknowledgments

I’d like to acknowledge the exceptional team at Apress for allowing me to write not one but twelve books for them over the last decade or so. I’ve worked with so many great people, and it’s virtually impossible not to forget someone in a list like this, but among the crew for sure are Ami Knox, Arockia Rajan Dhurai, Beth Christmas, Dulcy Nirmala Chellappa, Chris Mills, Christine Ricketts, Dominic Shakeshaft, Douglas Pundick, Frank Parnell, Frank Pohlmann, Gary Cornell, Jill Balzano, Julie Miller, Katie Stence, Kelly Gunther, Kelly Winquist, Kevin Shea, Kim Wimpsett, Kimberly van der Elst, Krishnan Sathyamurthy, Laura Cheu, Laura Esterman, Leah Weissburg, Leonard Cuellar, Liz Welch, Louise Corrigan, Marilyn Smith, Michelle Lowman, Nancy Chen, Nicole Faraclas, Nirmal Selvaraj, Richard Dal Porto, Sharon Wilkey, Sofia Marchant, Stephanie Parker, Steve Anglin, Tina Nielsen, and Tracy Brown Collins.

As I said, I’m sure I’ve forgotten someone, but rest assured it was not on purpose! Thank you all for giving me a shot and allowing me to continue this journey. I most definitely could not have done it alone and I thank you all, unreservedly!

Introduction

You know, when I started learning how to program, it was a piece of cake!

You’d turn on the computer and be greeted by a nice little “Ready” prompt. You’d start typing in some code (BASIC), and eventually, you’d type run, hit Enter, and watch whatever it was you put in there spit back something (my first program was a man drawn with various keyboard characters doing jumping jacks). You might save that program to a cassette – yes, kids, a cassette! – and hand it to your friends if you wanted to share.

But that was it. It was just that easy.

Nowadays, though, the story is very different.

Writing even a trivial application now involves layers upon layers of abstractions and complexities that you must mix together, like baking the world’s most complicated cake, hoping it all works in the end. Then, should you want to distribute the technological terror you’ve constructed (sorry, Aldearan), you’ve got even more challenges to overcome.

How anyone learns to program from scratch these days, I’m not sure!

But I’m hoping to help there!

With this book, I’m going to look at the ingredients that go into baking a cake – err, building an application – these days. To be sure, it won’t cover everything. And no one recipe is necessarily the same anyway – there are lots of choices available to a developer now. But I believe I’ve chosen the ones most commonly used to build modern full-stack applications.

What exactly is a full-stack application anyway? Well, simply put, it’s an application that includes both a front-end “client,” like a web site, and a back-end “server,” like, well, a server! We’re talking about building an application that combines those two halves into a coherent whole. Most application development these days is web-based in some way (where “web” doesn’t have to mean something available on the public Internet, but something built with web technologies like HTML, JavaScript, and CSS), so that’s what we’re going to be doing in this book.

To do this, we’re going to use React, which is one of the most popular libraries for building clients out there today. And we’ll use Node.js, which is a popular choice for back-end development. We’re also going to use TypeScript, a language that enhances

InTroduCTIon

JavaScript on both sides of the fence to make our coding lives better. We’re going to touch on several other tools that relate to all of this including Babel and Webpack. We’ll talk about some strategies for connecting the client to the server including REST and WebSockets. Finally, you’ll learn about packaging up applications using the very popular Docker.

All this will be combined to build two full, real applications. This way, it’s not just simple, contrived examples. No, it’ll be real code, practical solutions to real problems encountered in building them, and real techniques for putting all these pieces together and making sense of all this complexity.

In the end, you’ll have a solid foundation for building modern full-stack applications that you can go forward with on your own to create greatness.

I mean it’ll never be as great as my guy doing jumping jacks written in BASIC and loaded off a cassette, but you gotta have goals.

So let’s get to it. There’s work to be done, learning to be accomplished, and, I hope, fun to be had!

CHAPTER 1

Server-Side Action: Node and NPM

Welcome to the book! I hope you’ve got a comfy chair under you, a tasty drink on the table next to you and perhaps a light snack (may I suggest some dark chocolate biscotti?), and your brain ready to soak up a ton of knowledge on modern web development, ‘cause that’s what the show is all about and the curtains are about to be drawn!

In this book, we’ll be building two full apps that will demonstrate all the concepts that we’ll be discussing along the way in a practical manner. Far from being just simple, contrived bits of code, these are two full apps which are functional and useful (and even fun, given that one of them is a game, which will provide you a whole new way of looking at coding). As we do so, you’ll get insight into the thinking that went into them, their design and architecture, so you get a holistic picture of what’s involved in building something like these two apps. You will even, here and there, get some notes about issues I faced and how I resolved them, things that will almost certainly help you achieve your goals as you charge onward into your own projects.

To start, we’ll look at what is most usually (though not exclusively, as you’ll learn!) the purview of the server side. Remember that we’re talking “full-stack” development here, which means you’ll be learning about coding clients as well as the server code they make use of in order to form a cohesive, whole application. In this chapter, we’ll begin by looking at two extremely popular tools for developing servers: Node.js and NPM.

© Frank Zammetti 2020 F. Zammetti, Modern Full-Stack Development, https://doi.org/10.1007/978-1-4842-5738-8_1

Of JavaScript Runtimes and Building (Mostly) Servers

Ryan Dahl – that cat has some talent, I tell ya!

Ryan is the creator of a fantastic piece of software called Node.js (or just plain Node, as it is often written, and as I’ll write it from here on out). Ryan first presented Node at the European JSConf in 2009, and it was quickly recognized as a potential game-changer, as evidenced by the standing ovation his presentation received (I presume Ryan is an excellent presenter generally as well).

Node is a platform for running primarily, though not exclusively, server-side code that has high performance and is capable of handling large request loads with ease. It is based on the most widely used language on the planet today: JavaScript. It’s straightforward to get started with and understand, yet it puts tremendous power in the hands of developers, in large part thanks to its asynchronous and event-driven model of programming. In Node, almost everything you do is nonblocking, meaning code won’t hold up the processing of other request threads. Most types of I/O, which is where blocking comes into play most, are asynchronous in Node, whether it’s network calls or file system calls or database calls. This, plus the fact that to execute code, Node uses Google’s popular and highly tuned V8 JavaScript engine, the same engine that powers its Chrome browser, makes it very high performance and able to handle a large request load (assuming that you as the developer don’t botch things of course!).

It’s also worth noting that, as weird as it may sound, Node is single-threaded. It at first seems like this would be a performance bottleneck, but in fact, it’s a net benefit because it avoids context-switching. However, this is a little bit of a misnomer in that it’s more correct to say that Node is event-driven and single-threaded with background workers. When you fire off some type of I/O request, Node will generally spawn a new thread for that. But, while it’s doing its work, that single event-driven thread continues executing your code. All of this is managed with an event queue mechanism so that the callbacks for those I/O operations are fired, back on that single thread, when the responses come back. All of this means that there is no (or at least minimal) contextswitching between threads but also that the single thread is never sitting idle (unless there is literally no work to do of course), so you wind up with that net positive benefit I mentioned.

Note in later chapters, you’ll see that node isn’t specific to the server side of the equation, and in fact, you don’t always build apps with node; sometimes you use it to install and execute tools for various purposes on your own development machine. hold on to that thought; we’ll be coming back to before long a few chapters from now.

None of these technical details are especially important to use as a Node developer, but the performance it yields is what makes it no wonder that so many significant players and sites have adopted Node to one degree or another. These aren’t minor outfits we’re talking about, we’re talking names you doubtless know, including DuckDuckGo, eBay, LinkedIn, Microsoft, Netflix, PayPal, Walmart, and Yahoo, to name just a few examples. These are large businesses that require top-tier performance, and Node can deliver on that promise (again, with the caveat that you as the developer don’t mess things up, because that’s always possible).

Node is a first-class runtime environment, meaning that you can do such things as interacting with the local file system, access relational databases, call remote systems, and much more. In the past, you’d have to use a “proper” runtime, such as Java or .Net to do all this; JavaScript wasn’t a player in that space. With Node, this is no longer true. It can compete not only on performance but also in terms of what capabilities it provides to developers. If you can think of it, chances are you can do it with Node, and that wasn’t always the case with JavaScript.

To be clear, Node isn’t in and of itself a server. You can’t just start up Node and make HTTP requests to it from a web browser. It won’t do anything in response to your requests by default. No, to use Node as a server, you must write some (straightforward and concise, as you’ll see) code that then runs on the Node “runtime.” Yes, you effectively write your own web server and app server, if you want to split hairs (or potentially FTP, Telnet, or any other type of server you might wish to). That’s a very odd thing to do as a developer – we usually apply the “don’t reinvent the wheel” mantra for stuff like that and pull one of the hundreds of existing options off the shelf. Plus, writing such servers sounds (and probably actually is) daunting to most developers, and for good reason! To be sure, it absolutely would be if you tried to write a web server from scratch in many other languages, especially if you want it to do more than just serve static content files. But not with Node!

But remember, acting as a server is just one capability that Node provides as a JavaScript runtime, and it can provide this functionality only if you, as a developer, feed it the code it needs to do so! In fact, a great many developer tools, and other types of apps, use Node as their runtime nowadays. Node really is all over the place!

Note as you’ll see, react, Webpack, and typeScript, three things that are primary focuses of this book (docker being the outlier), use node to run and/or to be installed (well, npM is used to install them if we’re being accurate, but we’ll get to npM in just a moment). these are tools, not servers, which is the main point: node is useful for much more than just creating servers!

Node allows you to use the same language and knowledge on both client and server, something that was difficult to accomplish before. In fact, aside from Java and some Microsoft technologies (see project Blazor, which seeks to do the same thing with C#, if you’re curious), there never has really been an opportunity to do so until Node came along. It’s a pretty compelling opportunity.

Another critical aspect of Node is a driving design goal of the project, which is keeping its core functionality to an absolute minimum and providing extended functionality by way of APIs (in the form of JavaScript modules) that you can pick and choose from as needed. Node gets out of your way as much as possible and allows you only to introduce the complexity you really need, when you need it. Node ships with an extensive library of such modules, but each must be imported into your code, and then there are literally thousands of other modules that you can bring in as needed, some of which you’ll see as we progress throughout this book.

In addition to all of this, getting, installing, and running Node are trivial exercises, regardless of your operating system preference. There are no complicated installs with all sorts of dependencies to manage, nor is there a vast set of configuration files to mess with before you can bring up a server and handle requests. It’s a five-minute exercise, depending on the speed of your Internet connection and how fast you can type! There is also no required tooling to work with Node. In fact, a simple text editor is enough, in simplest terms (though that isn’t to say you won’t want a robust IDE with Node support later, but at least for this book I won’t be assuming anything other than Notepad or some equivalent text editor).

Chapter 1 Server-Side aCtion: node and npM

All of this makes working with Node so much more straightforward than many competing options while providing you with top-notch performance and load handling capabilities. Moreover, it does so with a consistent technological underpinning as that which you develop your client applications.

That’s Node in a nutshell!

Next, let’s see about getting it onto your machine so that you can start playing with some code together and we can look at Node in a little more depth.

Note if you aren’t a JavaScript expert, don’t worry, we won’t be getting too fancy. even when we get to the apps, i’ll consciously keep things as simple as possible. it is expected that you have some experience with JavaScript though, but you don’t need to be Brendan eich or doug Crockford (but if you have no experience with typeScript, that’s fine; we’ll start from square one with it later).

First Baby Steps with Node: Installation

To get started, there’s only one address to remember: http://nodejs.org

That’s your one-stop shop for all things Node, beginning, right from the front page, with downloading it, as you can see in Figure 1-1

Usually, I would tell you to install the latest version available, but in this case, it might be better to choose a long-term support (LTS) version, because they tend to be more stable. However, it shouldn’t (he said, with fingers crossed) matter which you choose, for the purposes of this book. For the record, however, I developed all the code using version 10.16.3, so if you encounter any problems, I would suggest choosing that version, which you can get from the Other Downloads link and then the Previous Releases link (you’ll be able to download any past version you like from there).

The download will install in whatever fashion is appropriate for your system, and I leave this as an exercise for the reader. For example, on Windows, Node provides a perfectly ordinary and straightforward installer that will walk you through the necessary (and extremely simple) steps. On macOS X, a typical install wizard will do the same.

Figure 1-1. Node has a simple web site, but it gets the job done!

Once the install completes, you will be ready to play with Node. The installer should have added the Node directory to your path. So, as a first simple test, go to a command prompt or console prompt, type node, and press Enter. You should be greeted with a > prompt. Node is now listening for your commands in interactive mode. To confirm, type the following:

console.log("Hello, you ugly bad of mostly water!");

Press Enter, and you should be greeted with something like what you see in Figure 1-2 (platform differences excepted, I’m a Windows guy myself, unashamedly, so that’s where the screenshots throughout this book will be from, perhaps with a few exceptions later).

Figure 1-2. The rather uppity (though technically accurate) first greeting, proving Node is alive

If you find that this doesn’t work, please take a moment and ensure that Node is indeed in your path. It will make things a lot easier going forward.

More Useful: Executing JavaScript Source Files

Interacting with Node in CLI (Command-Line Interface) mode like this is fine and dandy, but it’s limited. What you really want to do is execute a saved JavaScript file using Node. As it happens, that’s easy to do. Create a text file named test.js (it could be anything, but that’s a pretty good choice at this point), and type the following code into it (and, of course, save it):

let a = 5; let b = 3; let c = a * b; console.log(`${a} * ${b} = ${c}`);

Chapter 1 Server-Side aCtion: node and npM

Chapter 1 Server-Side aCtion: node and npM

To execute this file, assuming you are in the directory in which the file is located, you simply must type this: node test.js

Press Enter after that, and you should be greeted with an execution, such as the one you see in Figure 1-3.

Figure 1-3. It ain’t much, but it’s a real program running with Node!

Clearly, this little bit of code is unexceptional, but it does demonstrate that Node can execute plain old JavaScript just fine. It demonstrates that we’re dealing with at least the ES2015 specification as well, being more specific, thanks to the use of let and template literals (or string interpolation if you prefer). You can experiment a bit if you like, and you will see that Node should run any basic JavaScript that you care to throw at it like this.

Node’s Partner in Crime: NPM

NPM, which stands for Node Package Manager, is a companion app that installs alongside Node (though it is developed separately and can be updated on a different schedule than Node). With it, you can download packages, which are reusable JavaScript modules (and any supporting stuff they might need) from a central package registry (or a private repository if you have one). The central repository you can find at www.npmjs.com

You can visit it through a web browser and look through all the packages available, which makes finding exactly what you need easy.

Using NPM is simple: it’s merely another command to run from a command prompt, just like Node is. For example, let’s say you create a directory named MyFirstNodeProject. In it, you execute the following:

npm install express

Here, npm is the CLI program that is NPM itself, and install is one command you can issue to it. Then, express is an argument to that command, and this is the general form that most of your interactions with NPM will take.

Note Most npM commands have a shorter form as well. For example, rather than type install, you can just type i, and it will do the same thing. Consult the npM docs for these shortcuts, or be pedantic like your favorite author and always type it long-form, err, for clarity or something!

If you execute that, you’ll find that a directory called node-modules has been created, and inside it will be a lot of…well, a lot of stuff you typically don’t need to worry about too much! In short, though, it’s all the code that makes up the Express module (which doesn’t matter right now, but is a JavaScript module, or package if you prefer, which we’ll be using in the MailBag app a few chapters hence… but we’ll get to that app in due time, we’ve got a fair bit of ground to cover before then, so for now suffice it to say it’s one of the two apps we’re going to be building with the technologies discussed over the first six chapters), plus whatever modules Express itself depends on (and whatever they might depend on, and so on). NPM takes care of fetching all those dependencies for you. You’ll also notice a file named package-lock.json has been created, and for our purposes here, you don’t need to worry about that except to know not to delete it as NPM needs it to do its job.

When you use the install command like this, the modules you name are installed in the current directory, and this is referred to as the local cache, or project cache. You can also install the module into what’s called the global cache by adding an argument to the command:

npm install -g express

Chapter 1 Server-Side aCtion: node and npM

Now, Express will be installed in a location outside the current directory and will be shared by all Node projects (or, more precisely, it will be available to all projects, because, of course, a project won’t use a globally installed module unless you tell it to). Most usually, you will want to install dependencies in the project cache so that different projects can use different version of a given module than other projects (there is always a single version of a given module in the global cache, if any are present at all).

A Few More NPM Commands

Aside from install, there are many other NPM commands, but you’ll probably only use a subset most of the time. For example, to find out what modules are installed in your project, you can issue this command: npm ls

Like on a *nix system, ls is short for list, and that’s what it does: lists the installed modules. What you’ll see is a textual tree that shows the modules and then the modules they depend on. In other words, more will likely be shown than just the modules you explicitly installed (some modules don’t have dependencies, but in the NPM ecosystem, those tend to be the exception rather than the rule).

Tip one very helpful tip i can give is that if you want to see just the top-level modules, whether in the global or local cache, you can add --depth=0 to the ls command.

If you want to see what’s installed in global cache instead, you can do npm -g ls

In fact, keep that -g option in mind because you can add that to most NPM commands to differentiate between the local and global caches. You can also update a given module: npm update express

Just provide the name of the module to update, and NPM will take care of it, updating to the latest available version. If you don’t provide a package name, then NPM will dutifully update all packages. And yes, you can drop a -g on it either way to target the global cache.

You can, of course, uninstall packages too:

npm uninstall express

Execute that and NPM will wipe Express from the local cache, along with its transient dependencies (so long as nothing else that remains that depends on them).

These few commands represent likely the majority of what you’ll need to interact with NPM. I refer you to the NPM docs for other commands (and note that just typing npm and hitting Enter at a command prompt will show you a list of available commands, and you can then type npm help <command> to get information about each).

Initializing a New NPM/Node Project

Now, in all of this, I did skip one step that clearly is optional but is, in fact, typical, and that’s initializing a new project. With most Node/NPM projects, you’ll also have a file named package.json in the root directory of the project. This file is the project manifest file, and it provides metadata information to NPM (and Node, at least indirectly) about your project that it needs to do certain things. It will tell NPM what modules to install if they haven’t been installed yet for one thing (which makes giving a project to another developer very easy!). It will also contain information like the name and version of the project, its main entry point, and lots of other information (most of which is optional, but we’ll look at that a bit more in the next chapter).

While you can write this file by hand or even go entirely without it, it’s a good idea to have it, and it’s a good idea to let NPM create it for you, which you can do by executing this command: npm init

If you are following along, please make sure the directory you run this from is empty (delete node_modules and package-lock.json if present, both of which will be described later). This will trigger an interactive process that walks you through the creation of the package.json file, something like you see in Figure 1-4.

Another random document with no related content on Scribd:

“And now,” he said, “I must be up and doing, although it is past two o’clock. I must bid my mother good-bye, and I foresee there will be no time to do it when once I have reported, which I promised to do within twenty-four hours. By starting now I can reach Ferry Farm tomorrow morning, spend an hour with her, and return here at night; so if you, captain, will have my horses brought, I will wake up my boy Billy”—for, although Billy was quite George’s age, he remained ever his “boy.”

Next morning at Ferry Farm, about ten o’clock, Betty, happening to open the parlor door, ran directly into George’s arms, whom she supposed to be forty-five miles off. Betty was speechless with amazement.

“Don’t look as if you had seen a rattlesnake, Betty,” cried George, giving her a very cruel pinch, “but run, like a good child as you are, though flighty, and tell our mother that I am here.”

Before Betty could move a step in marched Madam Washington, stately and beautiful as ever. And there were the three boys, all handsome youths, but handsomer when they were not contrasted with the elder brother; and then, quite gayly and as if he were a mere lad, George plunged into his story, telling his mother that he was to make the campaign with General Braddock as first aide-de-camp, and trying to tell her about the officers’ letter, which he took from his pocket, but, blushing very much, was going to return it, had not Betty seized it as with an eagle’s claw.

“Betty,” cried George, stamping his foot, “give me back that letter!”

“No, indeed, George,” answered Betty, with calm disdain. “Do not put on any of your grand airs with me. I have heard of this letter, and I mean to read it aloud to our mother. And you may storm and stamp and fume all you like—’tis not of the slightest consequence.”

So George, scowling and yet forced to laugh a little, had to listen to all the compliments paid him read out in Betty’s rich, ringing young voice, while his mother sat and glowed with pride, and his younger brothers hurrahed after the manner of boys; and when Betty had got through the letter her laughing face suddenly changed to a very

serious one, and she ran to George and kissed him all over his cheeks, saying:

“Dear George, it makes me so happy that I both want to laugh and cry—dear, dear brother!”

And George, with tender eyes, kissed Betty in return, so that she knew how much he loved her.

When Madam Washington spoke it was in a voice strangely different from her usually calm, musical tones. She had just got the idol of her heart back from all his dangers, and she was loath to let him go again, and told him so.

“But, mother,” answered George, after listening to her respectfully, “when I started upon my campaign last year you told me that you placed me in God’s keeping. The God to whom you commended me then defended me from all harm, and I trust He will do so now Do not you?”

Madam Washington paused, and the rare tears stole down her cheeks.

“You are right, my son,” she answered, presently “I will not say another word to detain you, but will once more give you into the hands of the good God to take care of for me.”

That night, before twelve o’clock, George reported at Alexandria to General Braddock as his aide.

On the 20th of April, near the time that George had set out the year before, General Braddock began his march from Alexandria in Virginia to the mountains of Pennsylvania, where the reduction of Fort Duquesne was his first object. There were two magnificent regiments of crack British troops and ten companies of Virginia troops, hardy and seasoned, and in the highest spirits at the prospect of their young commander being with them. They cheered him vociferously when he appeared riding with General Braddock, and made him blush furiously. But his face grew very long and solemn when he saw the immense train of wagons to carry baggage and stores which he knew were unnecessary, and the general at that very moment was storming because there were not more.

“These,” he said, “were furnished by Mr Franklin, PostmasterGeneral of Pennsylvania, and he sends me only a hundred and fifty at that.”

“A hundred too many,” was George’s thought.

The march was inconceivably slow. Never since George could remember had he so much difficulty in restraining his temper as on that celebrated march. As he said afterwards, “Every mole-hill had to be levelled, and bridges built across every brook.” General Braddock wished to march across the trackless wilderness of the Alleghanies as he did across the flat plains of Flanders, and he spent his time in constructing a great military road when he should have been pushing ahead. So slow was their progress that in reaching Winchester George was enabled to make a détour and go to Greenway Court for a few hours. The delight of Lord Fairfax and Lance was extreme, but in a burst of confidence George told them the actual state of affairs.

“What you tell me,” said the earl, gravely, “determines me to go to the low country, for if this expedition results disastrously I can be of more use at Williamsburg than here. But, my dear George, I am concerned for you, because you look ill. You are positively gaunt, and you look as if you had not eaten for a week.”

“Ill!” cried George, beginning to walk up and down the library, and clinching and unclinching his lists nervously. “My lord, it is my heart and soul that are ill. Can you think what it is to watch a general, brave but obstinate, and blind to the last degree, rushing upon disaster? Upon my soul, sir, those English officers think, I verily believe, that the Indians are formed into regiments and battalions, with a general staff and a commissary, and God knows what!” And George raved a while longer before he left to ride back to Winchester, with Billy riding after him. This outbreak was so unlike George, he looked so strange, his once ruddy face was so pallid at one moment and so violently flushed at another that the earl and Lance each felt an unspoken dread that his strong body might give way under the strain upon it.

George galloped back into Winchester that night. Both his horse and Billy’s were dripping wet, and as he pulled his horse almost up on his

haunches Billy said, in a queer voice:

“Hi, Marse George, d’yar blood on yo’ bridle. You rid dat boss hard, sho’ nough!”

“Hold your tongue!” shouted George, in a tone that Billy had never heard from him before; and then, in the next minute, he said, confusedly, “I did not mean to speak so, but my head is in a whirl; I think I must be ill.”

And as he spoke he reeled in his saddle, and would have fallen had not Billy run forward and caught him. He staggered into the house where he had lodgings, and got into his bed, and by midnight he was raving with fever.

Billy had sense enough to go for Dr. Craik, George’s old acquaintance, who had volunteered as surgeon to General Braddock’s staff. He was a bright-eyed, determined-looking man, still young, but skilled in his profession. By morning the fever was reduced, and Dr. Craik was giving orders about the treatment as he sat by George’s bedside, for the army was to resume its march that day.

“Your attack is sharp,” said the doctor, “but you have an iron constitution, and with ordinary care you will soon be well.”

George, pale and haggard, but without fever, listened to the doctor’s directions with a half-smile. The troops were already on the move; outside could be heard the steady tramp of feet, the thunder of horses’ hoofs, the roll of artillery-wagons, and the commotion of an army on the move. In a few moments the doctor left him, saying:

“I think you will shortly be able to rejoin the army, Colonel Washington.”

“I think so, too,” answered George.

As soon as the doctor was out of the room George turned to Billy and said:

“Help me on with my clothes, and as soon as the troops are well out of the town fetch the horses.”

When the soldiers halted at noon, General Braddock, sitting under a tree by the road-side, was asking Dr. Craik’s opinion of the time that Colonel Washington could rejoin, when around the corner of a huge bowlder rode George with Billy behind him. He was very pale, but he could sit his horse. He could not but laugh at the doctor’s angry face, but said deprecatingly to him:

“I would have fretted myself more ill had I remained at Winchester, for I am not by nature patient, and I have been ill so little that I do not know how to be ill.”

“I see you don’t,” was the doctor’s dry reply

For four days George kept up with the army, and managed, in spite of burning fevers, of a horrible weakness and weariness, of sleepless nights racked with pain, to ride his horse. On the fifth he was compelled to take to a covered wagon. There, on a rough bed, with Billy holding his burning head, he was jolted along for ten days more, each day more agonizing than the one before. In that terrible time master and man seemed to have changed places. It was George who was fretful and unreasonable and wildly irritable, while Billy, the useless, the lazy, the incorrigible, nursed him with a patience, a tenderness, a strange intelligence that amazed all who saw it, and was even dimly felt by George. The black boy seemed able to do altogether without sleep. At every hour of the day and night he was awake and alert, ready to do anything for the poor sufferer. As the days passed on, and George grew steadily worse, the doctor began to look troubled. In his master’s presence Billy showed no sign of fear, but he would every day follow Dr. Craik when he left, and ask him, with an ashy face:

“Marse doctor, is Marse George gwi’ die?”

“I hope not. He is young and strong, and God is good.”

“Ef he die, an’ I go home, what I gwi’ say when mistis come out and say, ‘Billy, wh’yar yo’ Marse George?’” And at that Billy would throw himself on the ground in a paroxysm of grief that was piteous to see. The doctor carefully concealed from the soldiers George’s real condition. But after four or five days of agony a change set in, and

within the week George was able to sit up and even ride a little. The wagons had kept with the rear division of the army, but George knew that General Braddock, with twelve hundred picked men, had gone ahead and must be near Fort Duquesne. On the fourteenth day, in the evening, when the doctor came he found his patient walking about. He was frightfully thin and pale, but youth and strength and good habits were beginning to assert themselves. He was getting well.

“Doctor,” said he, “this place is about fifteen miles from Fort Duquesne. I know it well, and from this hour I emancipate myself from you. This day I shall report for duty.”

The next morning, the 9th of July, 1755, dawned beautifully, and the first long lances of light revealed a splendid sight on the banks of the Monongahela. On one side flowed the great river in majestic beauty. Following the shores was a kind of natural esplanade, while a little way off the rich woods, within which dwelt forever a purple twilight, overhung this charming open space. And along this open space marched, in exquisite precision, two thousand of England’s crack troops—cavalry, infantry, and artillery—and a thousand bronzed Virginia soldiery to the music of the fife and drum. Often in afteryears George Washington was heard to say that the most beautiful sight his eyes ever rested on was the sight of Braddock’s army at sunrise on that day of blood. Officers and men were in the highest spirits; they expected within a few hours to be in sight of Fort Duquesne, where glory, as they thought, awaited their coming. Even George’s apprehensions of the imprudence of this mode of attack were soothed. He rode by General Braddock’s side, and was by far the most conspicuous figure there for grace and nobility His illness seemed to have departed in a night, and he was the same erect, soldierly form, fairly dwarfing every one contrasted with him. As the general and his first aide rode together, General Braddock said, confidently:

“Colonel Washington, in spite of your warning, see how far we have come upon our way without disaster. The danger of an attack by Indians is now passed, and we have but to march a few miles more and glory is ours.”

Scarcely were the words out of his mouth when there was one sharp crack of a gun, followed by a fierce volley, and fifty men dropped in their tracks. But there was no enemy visible. The shots were like a bolt of lightning from a clear sky.

“The Indians,” said George, in a perfectly composed voice, reining up his horse.

“I see no Indians,” cried General Braddock, excitedly. “There is disorder in the ranks; have them closed up at once, and march in double time. We will soon find the enemy.”

But the firing from the invisible foe again broke forth, this time fiercer and more murderous than before. General Braddock, riding to the head of the first regiment, which had begun to waver, shouted the order for them to reform and fire. The veteran troops, as coolly as if on parade, closed up their ranks, and gave a volley, but it was as if fired in the air. They saw no enemy to fire at. Meanwhile the Virginia troops, after the first staggering effect of a terrific musketry fire poured into them by an unseen enemy, suddenly broke ranks, and, each man running for a tree, they took possession of the skirts of the woods. On seeing this General Braddock galloped up to George.

“Colonel Washington,” he cried, violently, “your Virginia troops are insubordinate! They have scattered themselves through the woods, and I desire them formed again in columns of fours to advance.”

“Sir,” answered George, in agony, “the ravines are full of Indians— many hundreds of them. They can slaughter us at their pleasure if we form in the open. The Virginians know how to fight them.”

“You are an inexperienced soldier, sir, and therefore I excuse you. But look at my English veterans—see how they behave—and I desire the Virginians to do the same.”

At that moment George’s horse fell upon his knees, and the next he rolled over, shot through the heart. The English regiments had closed up manfully, after receiving several destructive volleys, returning the fire of their assailants without seeing them and without producing the smallest effect. But suddenly the spectacle of half their men dead or wounded on the ground, the galloping about of

riderless horses, the shrieks of agony that filled the air, seemed to unman them. They broke and ran in every direction. In vain General Braddock rode up to them, actually riding over them, waving his sword and calling to them to halt.

The men who had faced the legions of Europe were panic-stricken by this dreadful unseen foe, and fled, only to be shot down in their tracks. To make it more terrible, the officers were singled out for slaughter, and out of eighty-six officers in a very little while twenty-six were killed and thirty-seven wounded. General Braddock himself had his horse shot under him, and as he rolled on the ground a cry of pain was wrung from him by two musket-balls that pierced his body. Of his three aides, two lay weltering in their blood, and George alone was at his side helping him to rise.

Rash and obstinate as General Braddock might be, he did not lack for courage, and in that awful time he was determined to fight to the last.

“Get me another horse,” he said, with difficulty, to George. “Are you, too, wounded?”

“No, general, but I have had two horses shot under me. Here is my third one—mount!” And by the exertion of an almost superhuman strength he raised General Braddock’s bulky figure from the ground and placed him in the saddle.

“I am badly wounded,” said General Braddock, as he reeled slightly; “but I can sit my horse yet. Your Virginians are doing nobly, but they should form in columns.”

Besotted to the end, but seeing that the Virginians alone were standing their ground, General Braddock did not give a positive order, and George did not feel obliged to obey this murderous mistake. But General Braddock, after a gasp or two, turned a livid face towards George.

“Colonel Washington, the command is yours. I am more seriously wounded than I thought.” He swayed forward, and but for George would have fallen from his horse.

The panic was now at its height. Men, horses, wagons, all piled together in a terrible mêlée, made for the rear; but there, again, they were met by a hail of bullets. Staggered, they rushed back, only to be again mowed down by the hidden enemy. The few officers left commanded, begged, and entreated the men to stand firm; but they, who had faced death upon a hundred fields, were now so mad with fear that they were incapable of obedience. George, who had managed to have General Braddock carried to the rear with the aid of Dr. Craik, had got another horse, and riding from one end of the bloody field to the other, did all that mortal man could do to rally the panic-stricken men, but it was in vain. His clothes were riddled with bullets, but in the midst of the carnage around him he was unharmed, and rode over the field like the embodied spirit of battle.

The Virginians alone, cool and determined, fought steadily and sold their lives dearly, although picked off one by one. At last, after hours of panic, flight, and slaughter, George succeeded in bringing off the remnant of the Virginians, and, overtaking the fleeing mob of regular troops some miles from the scene of the conflict, got them across the ford of the Monongahela. They were safe from pursuit, for the handful of Frenchmen could not persuade their Indian allies to leave the plunder of the battle-field for the pursuit of the enemy. The first thing that George did was to send immediately for wagons, which had been left behind, to transport the wounded. General Braddock, still alive but suffering agonies from his wounds, was carried on horseback, then in a cart, and at last, the jolting being intolerable, on a litter upon the shoulders of four sturdy backwoodsmen. But he was marked for death. On the third day of this terrible retreat, towards sunset, he sank into a lethargy. George, who had spent every moment possible by his side, turned to Dr. Craik, who shook his head significantly—there was no hope. As George dismounted and walked by the side of the litter, the better to hear any words the dying soldier might utter, General Braddock roused a little.

“Colonel Washington,” he said, in a feeble voice, “I am satisfied with your conduct. We have had bad fortune—very bad fortune; but”— here his mind began to wander—“yonder is the smoke rising from

the chimneys; we shall soon be home and at rest. Good-night, Colonel Washington—”

“GEORGE DID ALL THAT MORTAL MAN COULD DO”

The men with the litter stopped. George, with an overburdened heart, watched the last gasp of a rash but brave and honorable soldier, and presently gently closed his eyes. That night the body of General Braddock, wrapped in his military cloak, was buried under a great oak-tree in the woods by the side of the highway, and before daylight the mournful march was resumed.

The news of the disaster had preceded them, and when George, attended only by Captain Vanbraam and a few of his Virginia officers, rode into Williamsburg on an August evening, it was with the heaviest heart he had ever carried in his bosom. But by one of those strange paradoxes, ever existing in the careers of men of destiny, the events that had brought ruin to others only served to exalt him personally. His gallant conduct in battle, his miraculous escape, his bringing off of the survivors, especially among the Virginia troops, and the knowledge which had come about that had his advice been heeded the terrible disaster would not have taken place—all

conspired to make him still more of a popular hero. Not only his own men adored him, and pointed out that he had saved all that could be saved on that dreadful day, but the British troops as well saw that the glory was his, and the return march was one long ovation to the one officer who came out of the fight with a greater reputation than when he entered it. Everywhere crowds met him with acclamations and with tears. The streets of the quaint little town of Williamsburg were filled with people on this summer evening, who followed the party of officers, with George at their head, to the palace. George responded to the shouts for him by bowing gracefully from side to side.

Arrived at the palace he dismounted, and, just as the sentry at the main door presented arms to him, he saw a party coming out, and they were the persons he most desired to see in the world and least expected. First came the Earl of Fairfax with Madam Washington, whom he was about to hand down the steps and into his coach, which had not yet driven up. Behind them demurely walked Betty, and behind Betty came Lance, carrying the mantles of the two ladies.

The earl and Madam Washington, engaged in earnest conversation, did not catch sight of George until Betty had rushed forward, and crying out in rapture, “George, dear George!” they saw the brother and sister clasped in each other’s arms.

Madam Washington stood quite still, dumfounded with joy, until George, kissing her hand tenderly, made her realize that it was indeed he, her best beloved, saved from almost universal destruction and standing before her. She, the calmest, the stateliest of women, trembled, and had to lean upon him for support; the earl grasped his hand; Lance was in waiting. George was as overcome with joy as they were.

“But I must ask at once to see the governor,” said he, after the first rapture of meeting was over. “You, my lord, must go with me, for I want friends near me when I tell the story of sorrow and disaster.”

Four days afterwards, the House of Burgesses being in session, Colonel Washington was summoned by the Speaker to read his report of the campaign before it, and to be formally designated as commander-in-chief of the forces. The facts were already known, but it was thought well, in order to arouse the people to the sense of their danger, and to provide means for carrying on the war in defence of their frontiers, that Colonel Washington should make a public report, and should publicly receive the appointment of commander-in-chief of the next expedition. The House of Burgesses, then as ever, proudly insistent of its rights, had given the governor to understand that they would give him neither money nor supplies unless their favorite soldier should have the command in the next campaign—and, indeed, the attitude of the officers and soldiery made this absolutely necessary. Even the governor had realized this, and, disheartened by the failure of his much-heralded regulars, was in a submissive mood, and these haughty colonial legislators, of whose republican principles Governor Dinwiddie already complained much, took this opportunity to prove that without their co-operation but little could be done.

The large hall of the House of Burgesses, but dimly lighted by small diamond-paned windows, was filled with the leading men of the colony, including Lord Fairfax. Ladies had been admitted to the floor, and among them sat in majestic beauty Madam Washington, and next to her sat Betty, palpitating, trembling, blushing, and with proud, bright eyes awaited the entrance of her “darling George,” as she called him, although often reproved for her extravagance by her mother.

At last George entered this august assembly His handsome head was uncovered, showing his fair hair. He wore a glittering uniform, and his sword, given him by Lord Fairfax, hung at his side. He carried himself with that splendid and noble air that was always his characteristic, and, quietly seating himself, awaited the interrogatory of the president. When this was made he rose respectfully and began to read from manuscript the sad story of Braddock’s campaign. It was brief, but every sentence thrilled all who heard it. When he said, in describing the terrible story of the 9th of July, “The

officers in general behaved with incomparable bravery, for which they suffered, upwards of sixty being killed or wounded,” a kind of groan ran through the great assemblage; and when he added, in a voice shaken with emotion, “The Virginia companies behaved like men and died like soldiers; for, I believe, out of three companies on the ground that day scarce thirty men were left alive,” sobs were heard, and many persons, both men and women, burst into tears.

His report being ended, the president of the House of Burgesses arose and addressed him:

“Colonel Washington: We have listened to your account of the late campaign with feelings of the deepest and most poignant sorrow, but without abandoning in any way our intention to maintain our lawful frontiers against our enemies. It has been determined to raise sixteen companies in this colony for offensive and defensive warfare, and by the appointment of his excellency the governor, in deference to the will of the people and the desire of the soldiers, you are hereby appointed, by this commission from his excellency the governor, which I hold in my hand, commander-in-chief of all the forces now raised or to be raised by this colony, reposing special confidence in your patriotism, valor, conduct, and fidelity. And you are hereby invested with power and authority to act as you shall think for the good of the service.

“And we hereby strictly charge all officers and soldiers under your command to be obedient to your orders and diligent in the exercise of their several duties.

“And we also enjoin and require you to be careful in executing the great trust reposed in you, by causing strict discipline and order to be observed in the army, and that the soldiers be duly exercised and provided with all necessaries.

“And you are to regulate your conduct in every respect by the rules and discipline of war, and punctually to observe and follow such orders and directions as you shall receive from his excellency the governor and this or other House of Burgesses, or committee of the House of Burgesses.”

A storm of applause broke forth, and George stood silent, trembling and abashed, with a noble diffidence. He raised one hand in deprecation, and it was taken to mean that he would speak, and a solemn hush fell upon the assembly. But in the perfect silence he felt himself unable to utter a word, or even to lift his eyes from the floor. The president sat in a listening attitude for a whole minute, then he said:

“Sit down, Colonel Washington. Your modesty is equal to your valor, and both are above comparison. Your life would not have been spared, as if by a miracle, had not the All-wise Ruler of the heavens and the earth designed that you should fulfil your great destiny; and one day, believe me, you shall be called the prop, the stay, and the glory of your country.”

THE END

FOOTNOTES:

[A] In Washington’s will he mentions “my man William, calling himself William Lee,” and gives him his freedom, along with the other slaves, and an annuity besides: “and this I give him as a testimony of my sense of his attachment to me, and for his faithful services during the Revolutionary War ”

[B] Washington, in his journal, speaks of the Indian firing at him at short range, but says nothing of his preventing his companion from killing the would-be murderer. But his companion expressly says that he would have killed the Indian on the spot had not Washington forbidden him The Indians became very superstitious about Washington’s immunity from bullets, especially after Braddock’s defeat In that battle he was the target for the best marksmen among them, and not only escaped without a scratch, although two horses were killed under him and his clothes riddled with bullets, but he was the only officer of Braddock’s military family who survived.

[C] This letter, which is printed in full in Marshall’s Life of Washington, was among the highest personal compliments ever paid Washington The signers were seasoned soldiers, addressing a young man of twenty-three, under whom they had made a campaign of frightful hardship ending in disaster. They were to be ordered to resume operations in the spring, and it was to this young man that these officers appealed, believing him to be essential to the proper conduct of the campaign.

A LOYAL TRAITOR. A Story of the War of 1812. Illustrated. Post 8vo, Cloth, Ornamental, $1 50.

A vigorous romance it is, full of life and adventure.— N. Y. Herald.

A stirring story The several characters are finely balanced and well drawn, and are admirably interwoven to give reasonableness and completeness in every chapter.—Chicago InterOcean.

We turn with a feeling of relief to Mr. Barnes’s breezy and Marryat-like story of the American privateersman.... This is all genuine romance, with a wide horizon and many changes of scene.... Mr. Barnes has done his work well.—N. Y. Times.

An excellent and intensely interesting story of romance and adventure.—Brooklyn Standard-Union.

The book has freshness, animation, and strong story-interest.—Outlook, N. Y.

A quick-moving, picturesque story. The daring Yankee sailor of that naval war, his life above deck and below, in battle and in cruise, his dialect and yarns, are all quaintly reproduced in a series of vivid scenes.—Philadelphia Record.

FOR KING OR COUNTRY. A Story of the American Revolution. Illustrated. Post 8vo, Cloth, Ornamental, $1 50.

NAVAL ACTIONS OF THE WAR OF 1812. Illustrated. 8vo, Cloth, Ornamental, $4 50.

NEW YORK AND LONDON

HARPER & BROTHERS, P

☞ The above works are for sale by all booksellers, or will be sent by mail by the publishers, postage prepaid, on receipt of the price.

TRANSCRIBER’S NOTES:

Obvious typographical errors have been corrected. Inconsistencies in hyphenation have been standardized.

Archaic or variant spelling has been retained. New original cover art included with this eBook is granted to the public domain.

*** END OF THE PROJECT GUTENBERG EBOOK A VIRGINIA CAVALIER ***

Updated editions will replace the previous one—the old editions will be renamed.

Creating the works from print editions not protected by U.S. copyright law means that no one owns a United States copyright in these works, so the Foundation (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth in the General Terms of Use part of this license, apply to copying and distributing Project Gutenberg™ electronic works to protect the PROJECT GUTENBERG™ concept and trademark. Project Gutenberg is a registered trademark, and may not be used if you charge for an eBook, except by following the terms of the trademark license, including paying royalties for use of the Project Gutenberg trademark. If you do not charge anything for copies of this eBook, complying with the trademark license is very easy. You may use this eBook for nearly any purpose such as creation of derivative works, reports, performances and research. Project Gutenberg eBooks may be modified and printed and given away—you may do practically ANYTHING in the United States with eBooks not protected by U.S. copyright law. Redistribution is subject to the trademark license, especially commercial redistribution.

START: FULL LICENSE

THE FULL PROJECT GUTENBERG LICENSE

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.