100% found this document useful (4 votes)
55 views

Download Practical GraphQL: Learning Full-Stack GraphQL Development with Projects 1st Edition Nabendu Biswas ebook All Chapters PDF

Learning

Uploaded by

szetosaingct
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (4 votes)
55 views

Download Practical GraphQL: Learning Full-Stack GraphQL Development with Projects 1st Edition Nabendu Biswas ebook All Chapters PDF

Learning

Uploaded by

szetosaingct
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Download the Full Version of ebook for Fast Typing at ebookmass.

com

Practical GraphQL: Learning Full-Stack GraphQL


Development with Projects 1st Edition Nabendu
Biswas

https://ebookmass.com/product/practical-graphql-learning-
full-stack-graphql-development-with-projects-1st-edition-
nabendu-biswas/

OR CLICK BUTTON

DOWNLOAD NOW

Download More ebook Instantly Today - Get Yours Now at ebookmass.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

TypeScript Basics: Learn TypeScript from Scratch and


Solidify Your Skills with Projects 1st Edition Nabendu
Biswas
https://ebookmass.com/product/typescript-basics-learn-typescript-from-
scratch-and-solidify-your-skills-with-projects-1st-edition-nabendu-
biswas/
ebookmass.com

Practical MATLAB Deep Learning: A Projects-Based Approach,


2nd Edition Michael Paluszek

https://ebookmass.com/product/practical-matlab-deep-learning-a-
projects-based-approach-2nd-edition-michael-paluszek/

ebookmass.com

Serverless Web Applications with AWS Amplify: Build Full-


Stack Serverless Applications Using Amazon Web Services
Akshat Paul
https://ebookmass.com/product/serverless-web-applications-with-aws-
amplify-build-full-stack-serverless-applications-using-amazon-web-
services-akshat-paul/
ebookmass.com

Practical Rust Projects - Second Edition Shing Lyu

https://ebookmass.com/product/practical-rust-projects-second-edition-
shing-lyu/

ebookmass.com
With Full Malice Brenda Hill

https://ebookmass.com/product/with-full-malice-brenda-hill/

ebookmass.com

Engineering for Sustainable Development: Theory and


Practice Wahidul K. Biswas

https://ebookmass.com/product/engineering-for-sustainable-development-
theory-and-practice-wahidul-k-biswas/

ebookmass.com

Heartbeat Sensor Projects with PulseSensor: Prototyping


Devices with Biofeedback 1st Edition Yury Gitman

https://ebookmass.com/product/heartbeat-sensor-projects-with-
pulsesensor-prototyping-devices-with-biofeedback-1st-edition-yury-
gitman/
ebookmass.com

Practical Rust Projects: Build Serverless, AI, Machine


Learning, Embedded, Game, and Web Applications (2nd ed.)
2nd Edition Shing Lyu
https://ebookmass.com/product/practical-rust-projects-build-
serverless-ai-machine-learning-embedded-game-and-web-applications-2nd-
ed-2nd-edition-shing-lyu/
ebookmass.com

Practical Machine Learning on Databricks (1st Edition)


Debu Sinha

https://ebookmass.com/product/practical-machine-learning-on-
databricks-1st-edition-debu-sinha/

ebookmass.com
Practical
GraphQL
Learning Full-Stack GraphQL
Development with Projects

Nabendu Biswas
Practical GraphQL
Learning Full-Stack GraphQL
Development with Projects

Nabendu Biswas
Practical GraphQL: Learning Full-Stack GraphQL Development with
Projects
Nabendu Biswas
Bhopal, India

ISBN-13 (pbk): 978-1-4842-9620-2 ISBN-13 (electronic): 978-1-4842-9621-9


https://doi.org/10.1007/978-1-4842-9621-9

Copyright © 2023 by Nabendu Biswas


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: James Robinson-Prior
Development Editor: James Markham
Editorial Assistant: Gryffin Winkler
Copyeditor: Kim Wimpsett
Cover designed by eStudioCalamar
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York, 1
New York Plaza, Suite 4600, New York, NY 10004-1562, USA. 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 booktranslations@springernature.com; for
reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com.
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. For more detailed information, please visit https://www.apress.
com/gp/services/source-code.
Paper in this product is recyclable
This book is affectionately dedicated to my wife and kid.
Table of Contents
About the Author���������������������������������������������������������������������������������ix

About the Technical Reviewer�������������������������������������������������������������xi

Introduction���������������������������������������������������������������������������������������xiii

Chapter 1: Getting Started��������������������������������������������������������������������1


Initial Setup������������������������������������������������������������������������������������������������1
Summary����������������������������������������������������������������������������������������������������3
Chapter 2: Queries��������������������������������������������������������������������������������5
Setting Up the GraphQL Server������������������������������������������������������������������5
Scalar Types���������������������������������������������������������������������������������������������10
Array Types�����������������������������������������������������������������������������������������������15
Array of Objects����������������������������������������������������������������������������������������19
Querying a Single Object��������������������������������������������������������������������������22
Queries for Genres�����������������������������������������������������������������������������������24
Relating Genre to Courses������������������������������������������������������������������������27
Relating Courses to Genre������������������������������������������������������������������������30
Reorganizing the Code�����������������������������������������������������������������������������32
Using Context�������������������������������������������������������������������������������������������36

v
Table of Contents

Adding Reviews����������������������������������������������������������������������������������������39
Adding Filtering����������������������������������������������������������������������������������������42
Filter by Average Rating���������������������������������������������������������������������������46
Summary��������������������������������������������������������������������������������������������������48
Chapter 3: Mutations��������������������������������������������������������������������������49
Creating Data�������������������������������������������������������������������������������������������49
Deleting Data��������������������������������������������������������������������������������������������57
Updating Data�������������������������������������������������������������������������������������������68
Summary��������������������������������������������������������������������������������������������������75
Chapter 4: Full-Stack GraphQL�����������������������������������������������������������77
The Setup�������������������������������������������������������������������������������������������������77
Create an Express Server�������������������������������������������������������������������������78
Set Up GraphQL����������������������������������������������������������������������������������������80
Client Queries�������������������������������������������������������������������������������������������82
Project Queries�����������������������������������������������������������������������������������������85
Cloud MongoDB����������������������������������������������������������������������������������������89
Mongoose Models and Fetching Data����������������������������������������������������100
Client Mutations�������������������������������������������������������������������������������������104
Project Mutations�����������������������������������������������������������������������������������107
Client with React������������������������������������������������������������������������������������114
Apollo Setup for the Client���������������������������������������������������������������������120
Adding the deleteClient and addClient Mutations����������������������������������125
Displaying Projects and the React Router����������������������������������������������133

vi
Table of Contents

Displaying a Single Project���������������������������������������������������������������������140


Creating the addProject and deleteProject Mutations����������������������������144
Updating the Project and Cascade Delete����������������������������������������������154
Summary������������������������������������������������������������������������������������������������161
Chapter 5: Creating an App with Prisma������������������������������������������163
The Setup�����������������������������������������������������������������������������������������������163
ElephantSQL Setup���������������������������������������������������������������������������������168
Configuring Prisma���������������������������������������������������������������������������������172
Creating the Schema and First Mutation������������������������������������������������176
More Queries and Mutations������������������������������������������������������������������183
Creating the postDelete and postSignup Mutations�������������������������������188
Adding Validators�����������������������������������������������������������������������������������191
Password Encrypting�����������������������������������������������������������������������������194
Implementing JWT���������������������������������������������������������������������������������195
Creating the Sign-in Mutation����������������������������������������������������������������199
Authorized User��������������������������������������������������������������������������������������202
Publishing and Unpublishing Posts��������������������������������������������������������209
Other Queries�����������������������������������������������������������������������������������������212
Summary������������������������������������������������������������������������������������������������220
Chapter 6: Connecting with the Front End����������������������������������������221
The Setup�����������������������������������������������������������������������������������������������221
Connecting the Client to the Server and the First Query������������������������223
Querying with Variables�������������������������������������������������������������������������227
Rendering Based on the User Profile�����������������������������������������������������231

vii
Table of Contents

Adding an Auth Token�����������������������������������������������������������������������������234


Publishing and Unpublishing Mutations�������������������������������������������������241
Creating the SignIn and SignUp Mutations���������������������������������������������245
Adding a Post Mutation��������������������������������������������������������������������������252
Summary������������������������������������������������������������������������������������������������256

Index�������������������������������������������������������������������������������������������������257

viii
About the Author
Nabendu Biswas is a full-stack JavaScript
developer and has been working in the IT
industry for the past 16 years for some of
world’s top development firms and investment
banks. He is a passionate tech blogger and
YouTuber and currently works as an Architect
in an IT firm. He is also the author of six Apress
books focusing on topics such as Gatsby,
MERN, TypeScript and React Firebase, all of
which can be found on Amazon.

ix
About the Technical Reviewer
Preethi Vasudev is an Oracle Certified Java
programmer with more than 20 years of
industry experience in investment banking,
healthcare, and other domains. She has a
master’s degree from Auburn University,
Alabama, and enjoys participating in coding
competitions.

xi
Introduction
GraphQL is revolutionizing how we develop and build websites. Seen
as an alternative to REST APIs, this query language has become popular
among developers and engineers who are looking for a query language
to help them quickly develop and deploy applications and features with
minimal fuss.
Starting with the basics, this book will teach you how to set up
GraphQL and key details regarding queries and mutations, before moving
on to more advanced, practical topics and projects.
You will gain a full understanding of the full web development
ecosystem from front end to back end, by learning to build React
applications using Prisma Apollo Client and MongoDB. Using a project-­
based approach, this book will equip you with all the practical knowledge
needed to tackle full enterprise projects and turbocharge your skills and
projects.

xiii
CHAPTER 1

Getting Started
In this book, you will learn about GraphQL. GraphQL is a new way to
create APIs. Traditional APIs were created with REST. The problem with
REST is that even when you need a subset of data, the endpoint gives all
the data from the databases.
This is a waste of precious network resources. So, in this book, you will
learn all about GraphQL. Here, you will learn to create APIs in a new way
in NodeJS. You will also learn to connect them to the front end.

Initial Setup
In this first chapter, you will learn how to install GraphQL on your system.
Also, you will learn to add extensions for GraphQL on VS Code to help you
in the development process.
To start using GraphQL, you need to have NodeJS installed on
your system. You will be using VS Code in your project. After that, you
should also install an extension called GraphQL, which will be helpful in
highlighting GraphQL in VS Code (Figure 1-1).

© Nabendu Biswas 2023 1


N. Biswas, Practical GraphQL, https://doi.org/10.1007/978-1-4842-9621-9_1
Chapter 1 Getting Started

Figure 1-1. GraphQL

2
Chapter 1 Getting Started

After that, create a folder named ecomm-app-graphql from the


terminal. Inside it give the command npm init -y to create an empty
node project. Next, give the following command to add graphql and
apollo- server in the project:

1   npm i apollo-server graphql

There are different ways to use graphql, and apollo is the most
popular one (Figure 1-2).

Figure 1-2. npm install

S
 ummary
In this chapter, you installed the packages apollo-server and graphql
in your system, through the terminal. You installed the official GraphQL
extension in VS Code, which will help you in the development process.
In the next chapter, you will learn about queries in GraphQL, which are
similar to GET APIs in RESTful endpoints and are used to get the data from
the database.

3
CHAPTER 2

Queries
In this chapter, we will start creating an e-commerce app and learn how to
use GraphQL with it.

Setting Up the GraphQL Server


First, we will create an index.js file in our e-commerce app. Here, we
import ApolloServer and gql first. With gql, we define the structure of the
query. The query itself is given in resolvers.
After the resolvers, we create a server through an instance of
ApolloServer, by passing typeDefs and resolvers. Lastly, we listen to this
server on a predefined URL. See Listing 2-1.

Listing 2-1. index.js


const { ApolloServer, gql } = require("apollo-server");

const typeDefs = gql`


    type Query {
        welcome: String
    }
`

© Nabendu Biswas 2023 5


N. Biswas, Practical GraphQL, https://doi.org/10.1007/978-1-4842-9621-9_2
Discovering Diverse Content Through
Random Scribd Documents
Vinzi gazed after him, and when he passed out of sight
felt he had lost the last home tie; the unknown lay before
him. He walked past the chapel to the house that stood
beyond. The small stone building near it must be the barn.
On the other side of the house was a shed, roofed with
shingles and stones, evidently the hayrick, for fodder was
stored within.

As the house door was closed and the door of the shed
stood open, Vinzi went to the hayrick. That no steps led up
to the little door was not surprising to Vinzi; he knew the
arrangement. The little shed did not rest on the ground but
stood firmly on four blocks, to keep the hay dry and
ventilated. As Vinzi knew, it was a case of clambering up to
the open door, which was so low a full-grown man had to
stoop to enter. Vinzi climbed up nimbly, and found a tall
man working inside.

"Good evening!" he called out. "Does this hayrick


belong to Lorenz Lesa?"

"It does. What do you wish of him?"

"He is our cousin. I belong to Vinzenz Lesa of Leuk, and


my father sends greetings to you. You know why I have
come," Vinzi informed him confidently, for he hoped this
man was the cousin himself.

Sticking his wooden pitchfork into the hay, the man


stepped forward to hear the lad better.

"Well, so you are Vinzi!" he said, giving him his hand


and looking him straight in the eyes. "It is good that you
have come up to your relatives. Did you make the journey
all alone?"
Vinzi's heart went out to the friendly speaker. He no
longer gazed at the ground, but looked into the kindly eyes
and told about his trip and how glad he was to find his
cousin so quickly, for he had been frightened at the thought
of coming among strangers.

"There is nothing to be afraid of here," said the man


good-naturedly. "The boys aren't exactly tame, but you will
get along with them. You must be hungry," he continued,
"so we will go to my wife, who will attend to that."

With a spring Vinzi landed on the ground and the cousin


followed.

Just then a stout woman opened the door of the house


and looked calmly around. "I have to let some of the smoke
out through the door," she said to her husband, but she
looked inquiringly at the boy at his side.

"I am bringing our young cousin from Leuk," he


explained. "He is a bit afraid, so you must see to it his fear
doesn't grow," and chuckled.

"You are welcome, young cousin," she said, offered her


hand and inspected him from head to foot until her husband
said:

"I think it might be just as well to continue your


examination indoors. The youngster still carries his
knapsack, and if he should happen to get something to eat
soon, he would not take it amiss. He has put a stiff march
behind him."

"He can eat right away," said she. "Supper is just ready;
the smoke drove me from the hearth. I will serve it at once,
for we need not wait for the boys; they will soon be
coming."
Stepping into the house, she took off Vinzi's knapsack,
and the lad was soon comfortably seated at the table. As
they ate, all timidity vanished. He was ravenously hungry
for he had scarcely eaten on the journey. Somehow his
cousin must have guessed this, and long before his plate
was empty, had heaped it again. Vinzi thought he had never
eaten anything better than the steaming potatoes and the
lovely yellow cheese.

Now and again the wife would say, "Pour out some more
milk for the boy. He must be thirsty after all the wind and
dust on that long trip."

Suddenly there arose a great hubbub, with loud huzzas


and much whip cracking.

"It is the boys," explained his Cousin Lorenz; "they have


brought the cattle. I must go out and help them. But
perhaps you would like to come out and see the cattle and
the stable?"

"Let him rest tonight," said Josepha. "Tomorrow, he can


start the day with the boys."

"I only asked because boys always like to be around


when there is something going on," her husband replied.
"But Vinzi is free to do as he likes."

"Then I'd like to stay here," chose Vinzi.

It pleased her that Vinzi was glad to stay indoors, and


first of all, he must have another cup of milk for she
declared it was needed to lay the last dust of the journey.

Then she seated herself comfortably in her chair,


saying, "Now tell me about your people and how things are
going at home."
Vinzi needed no second invitation for he had been
thinking about what his mother would be doing then,
wondering how Stefeli was faring alone in the pasture, and
how everything was getting along without him.

Now there was a great tramping outside, the door was


thrown open and a youngster about Vinzi's age came
rushing in. A little chap hurried behind him, and then a
taller boy followed who evidently did not wish to be last, for
giving a quick spring, he tried to vault over the smallest boy
by lifting himself on the little fellow's shoulders. But the sly
youngster ducked down and the bigger fellow fell headlong
with a thud.

"You shouldn't come in, in such an unmannerly way,


Faz," said the mother calmly.

"Good evening, cousin!" exclaimed the eldest boy,


holding out his hand to Vinzi.

"Good evening, cousin!" called out the second boy also,


and "Good evening, cousin!" greeted the youngest, pressing
up to Vinzi.

While Vinzi was shaking the proffered hands, the father


had come in, and as he sat down he said, "Well, now you
must learn one another's names, boys. Your cousin is called
Vinzi. That is for Vinzenz. My three are Joseph, Boniface
and Maurus. Those are their calendar names, but here at
home we call them Jos, Faz and Russli. Now I think you had
better take your places at the table."

Now that quiet had been restored so that she could be


heard, the mother said, "As our cousins did not inform us
they were sending their son to us, we did not make ready
for him. I have been thinking if he is to sleep in the house,
the storeroom will have to be emptied of the rye and corn
and all sorts of stuff. But the squeaking and scratching of
the mice might scare him. Wouldn't it be better, if I made
up a comfortable bed in the hayrick for him?"

"I will be glad to sleep in the hayrick," answered Vinzi.

"Just what I thought!" said the wife, greatly pleased


that everything upstairs could remain as it was. "You will
have to have a little table, a bench and a chest of drawers
to be comfortable," she added, "and when you have finished
eating, boys, you can carry them out for him."

She bustled off, and her three sons soon followed, and
as Vinzi thought perhaps he could help, he would have gone
too. But his cousin beckoned him back, declaring his
knapsack had been enough of a load for that day; it was
none too light, and hanging it on his arm, they went out to
the hayrick.

They had scarcely reached it when the three boys came


hurrying along. Jos carried the chest on his back, Faz the
little table with a quilt on top of it, Russli a bench, and the
mother followed with pillow and sheets. With an agility that
clearly showed she was used to climbing into the hayrick,
she was in at the little door, ready to take one thing after
another as her husband lifted them up.

When the last had been put in, his cousin said, "Now
we'll say good-night. Inside the door is a wooden bolt, just
like the one outside. With it fastened, you are sole master
of your castle."

And now his wife came down, saying, "There,


everything is ready for you. See, young cousin, down there
is the brook, and that will be your washroom. No one will
disturb you. You will find a towel on your bench. Sleep
soundly!"
The three boys also wished him good-night, but Jos
turned around again to say, "Are you coming with us early
in the morning, when we drive the cows out, Vinzi? And will
you stay with us all day while we are herding?"

"Why, of course," answered Vinzi, "but you must tell me


which cows I have to watch most carefully. Will you wake
me so I am not late?"

"Yes, I'll call good and loud through the round air hole,"
promised Jos.

Now Vinzi was alone. He climbed up to his little door


and looked into the hayrick. There in one corner on a high
soft pile of hay, his bed was made. Beside it, the hay had
been pushed away to make room for the little table and
bench, and the chest stood against the wall. It was a most
comfortable little room. But he could not go to sleep yet, for
he was quite excited with all the experiences of the day.
Sitting on the beam which formed the sill of his door, he
looked outside. The heavens were studded with brilliant
stars. Then the moon rose from behind the mountains,
lighting up the dark trees and meadows. The little church
beyond gleamed white and the snow-capped mountains
towering above the rocky cliffs became clearer and brighter
every minute. Vinzi's eyes grew bigger and bigger. In his
great fear of what lay ahead of him, he had seen little else
than the gray stone house on his journey. But how different
was this scene from anything he had pictured!

There was no wilderness of stones about him. The


moonlight fell on a green earth and turned the tips of the
larch trees yonder to silver. The ripple of the brook alone
broke the deep silence. Vinzi listened to the beautiful tune
and the notes became fuller and fuller; he heard whole
melodies. He must have sat there a long time listening
when a sudden gust of wind blew the door against his knee
and startled him out of his dreaming.

He had never seen the stars so brilliant. The words of


his mother, how the Lord was always above him, looked
down on him and heard him, reached his heart as never
before. Surely he was near Heaven there, and he was filled
with gratitude to the God who had let him find good where
he had feared only evil. His cousins had received him as a
friend and he was already quite at home with them. He
wished he might sing a loud hymn of praise out into the
night, but it was too late for that; not a candle gleamed in
any of the cottages.

So he closed his little door, bolted it, and sought his


bed. It was soft and comfortable. Not a straw could prick
him through the heavy linen sheets. He gazed at the
brilliant star that shone through the air hole opposite his
bed. Even when his eyelids tried to close, he opened them
to gaze again. Yes, the star still shone on him, and when he
fell asleep, it was with a wonderful melody resounding in his
ears. The star was singing to Vinzi, and he heard it in his
dreams.

The next morning he was awakened by a dreadful


hubbub, for his name was being shouted by numerous
voices. Stefeli, thought Vinzi, had never made such a noise
when she came to wake him. But then he suddenly saw
where he was and knew the voices that kept shouting
louder and louder. Perhaps they had been calling for a long
time. Hastily stepping into his clothes, he threw his door
open and leaped down among his noisy cousins.

"Hurry up! Come along!" they chorused.

Vinzi replied that he had not washed yet so they should


go along and he would follow. The two elder boys ran off,
but Russli went to the stream with him, saying
confidentially, "You don't need to wash; no one will ever
notice it."

"No, Russli," objected Vinzi. "One must wash every


morning. Besides, it makes one feel better. Oh, the lovely
cool water!" And Vinzi knelt down by the brook and
splashed the clear water over his face time and time again,
and then drank one handful after the other.

Now he looked so fresh and happy that Russli, full of


the pleasure of imitation, said, "I'll wash with you tomorrow
morning, and drink too. I'll do it every day."

When they reached the house, the cousin and his wife
were still at the breakfast table. Both gave Vinzi a friendly
greeting, and Josepha set a large cup of coffee before him,
suggesting that he eat plenty of bread with it, for the fresh
mountain breeze would soon make him hungry.

When his Cousin Lorenz rose from the table, Vinzi


followed him out to the stable where Jos and Faz were
cracking their whips as a sign they were ready. Their father
now released the cows one after the other and the
procession started off to the pasture which lay a
considerable distance beyond the chapel. Russli walked
beside Vinzi and held him firmly by the hand, trying to hold
him back as much as he could.

Jos and Faz had all they could do to keep the cows on
the roadway and to urge them along, for fresh grass
tempted them now to one side, now to the other.

"Let me go, Russli," said Vinzi, pressing forward. "Can't


you see I must help your brothers with the cows?"

"You had better keep Russli in order," called out Faz.


"That will be helping us most. The little chap is always
tickling the cows with his switch so they scatter in all
directions and we can scarcely control them. He is a
mischievous little mite, and you'd better hang on to him,"
and as the obstinate cow with which he had been struggling
decided to move on, Faz ran ahead to the herd.

"Vinzi," said Russli, quite happy that he could have his


cousin all to himself, "have you a knife?"

"Why, yes, of course. I need one."

"Then I'll show you a great bush that makes fine


switches. Strong ones, you know; not brittle. Will you cut
me a few?"
"What do you want a switch for?" asked Vinzi. "I hope
you do not want to whip the cows. You heard what Faz told
me about you."

"Oh, I only tease them a little," said Russli. "Then they


jump up in the air and are awfully funny."

"But it's not funny for them," answered Vinzi. "They


jump from fright. Those thin switches hurt, and I'll cut none
for you. But I will make something else if the wood is the
right kind. Show me the bush."

Russli ran eagerly ahead and soon turned off the road
across a pasture, until he reached a large bush whose
branches grew straight up into the air.

"Here!" he called to Vinzi.

Highly pleased with the bush, Vinzi began to cut the


branches he liked best, and when he had a bunch of them,
he said, "Now, come along, we must go over to your
brothers. Do you know where they are? I can't see them
any more. Then I will do the cutting for you."

Russli ran along, followed by Vinzi, who suddenly


paused to exclaim, "Oh, how lovely it is here! But when do
we get to the pasture?"

"We are in the pasture now," said Russli.

Vinzi looked around him. Here and there stood tall, dark
larches, through whose delicate branches one could glimpse
the blue of the heavens above. Beneath their feet stretched
the lovely green of the mountain pasture land, brightened
by the fiery red alpine roses which grew amongst the moss-
covered stones. A full mountain stream rushed along its
course, and the rocks that hindered its passage tossed it
high into snow white foam. So this was the pasture!

Vinzi saw the cows a short distance away peacefully


browsing beneath the trees. The sunlight fell through the
trees on the glowing flowers and sparkled on the stream's
clear waters. The mountain breeze started the shadows
playing under the larches, and called forth a soft singing in
their branches.

The tuneful rustling seemed to swell, then to die away


in the distance. Vinzi stood motionless, gazing and listening.

"When will you begin cutting what you promised?"


asked Russli at last when his patience was entirely
exhausted.

"Yes, I'm coming," said Vinzi, as though waking out of a


dream.

Vinzi now ran off to where the cows grazed and looked
about for his cousins. Across the road was a very large
treeless pasture in which browsed many cattle. A small
group of young herders were bending over a smoking spot
on the ground. Jos and Faz were among them, Vinzi saw
that. He called out to Jos with all his might, but in vain for
some time, but as soon as Jos heard him he came over to
him.

"Come over to us, Vinzi," he called as he ran up. "We


are making a fire, or rather a smoke. One of the boys has
found a hole, and there is an animal in it, perhaps a
marmot. We think we can smoke it out. Come along, it is
real fun."

"No, I would rather not," replied Vinzi who found no


pleasure in seeing a frightened little animal jump out of its
hole, with boys to chase it and frighten it more.

"Besides, I have promised Russli to go back


immediately. I want to ask you something. Do you think
your father would mind if I cut a pipe for Russli?"

"Mind? What are you thinking about? I don't see any


reason why he should!" exclaimed Jos. "You can be sure
father will not be displeased and we will be only too glad if
you keep the little mischief away. He makes the cows so
wild we are kept busy running after them."

"But ought I not to help you with the herding?" asked


Vinzi. "May I just sit and cut pipes?"

"You will help us that way more than any other,"


declared Jos.

Vinzi was highly pleased over this division of labor, and


hurried back to Russli. Seating himself on a mossy stone
where the reddish-purple violets perfumed the air, he
selected a branch, and cut it off where it started to grow
more slender, and began to work on the thicker piece.

"What is it going to be when it is finished?" asked


Russli, who looked on with deep interest.

"It will be a pipe," answered Vinzi.

In happy astonishment, Russli pressed closer to the


carver so as to lose nothing of the process of this marvelous
work. He knew the little reed pipes that broke so quickly,
but he had never seen such a long, thick wooden pipe.

Vinzi had discovered much since he made his first pipe.


Now he cut several small holes, for that way he could get
several notes. But it took much time, for it was not easy to
bore the little round holes, and Vinzi was very exact in his
work. Several hours were spent on it, for between times
Vinzi stopped to listen to the way the wind sang through the
tall trees and to the murmur of the stream, sometimes one
of joy, sometimes one of gentle complaint. Then too, he
paused to breathe in the perfume of the violets. But at last
he closed his knife and said, "There, Russli, take it; your
pipe is ready."

With flashing eyes the happy boy put the pipe to his
mouth and blew a high, piercing shriek. Russli himself was
frightened at it.

Handing over the instrument to Vinzi, he said, "Now you


play on it," but at that moment there resounded a shrill
whistle and then another. Clearly it was a call.

"It is time to eat," explained Russli. "That's the way


they always whistle when we are to gather for lunch. Come
along!"

"A pipe! Look at my pipe!" he called out to his brothers


as he drew near where they were already sitting on the
grass eating. When Russli saw this, he looked searchingly
around, then ran to where his lunch-bag lay, and quickly
pulling out what was meant for him, held it out to Vinzi.

"Here, take it," said he. "This is yours; the others have
already taken theirs."

As soon as Jos had finished eating, he called out from


where he sat, "Here, Russli, give me the pipe, I want to try
it."

"Come and get it then," said Russli drily.


Vinzi had jumped up to take it over to Jos, but evidently
he had a feeling that if he wanted it, it was for him to fetch
it, and he quickly came up, as did Faz also, who called out,
"Show it to me too." But Jos was already holding it to his
mouth and warded Faz off. Jos knew something about how
the fingers had to be placed on the holes in order to
produce different notes, and he succeeded, though they
were very discordant and harsh.

"You do not know how! Just give it to me!" cried Faz,


grabbing the pipe, but in his hands it shrilled and
screeched.

"It looks so pretty," said Jos with regret. "We have


never been able to make so nice a one, but it does not
sound well."

Taking the pipe from Faz, Vinzi said, "I will give it a trial
myself," and began to play a little tune.

The notes followed one another so clearly, so


beautifully, they all stood spellbound, and when Vinzi
stopped, Jos exclaimed eagerly, "Oh, you play it well. Teach
me!"

"Me too," added Faz.

"And me too," shouted little Russli.

"Give me the pipe," urged Jos.

"No, give it to me," demanded Faz.

But Russli had grabbed his property and ran away,


fearing the stronger boys would rob him of it.
"Let him have it," said Vinzi, "and I will make each of
you one."

The promise quieted the brothers but no amount of


calling could bring Russli back, and finally Vinzi had to run
after him, to persuade him he would not lose his valuable
property. Now the boys seated themselves in a close circle
for all wanted to see how Vinzi did it. He was kept playing
on and on, everything he knew, and when he had no more
tunes, he made up melodies from the sound of the bells and
the song of the birds he had heard.

As he played on, his audience had grown, for the boys


from the other pastures had waited in vain for Faz and Jos
and one after another had come seeking them. Once there,
they tarried, for the music pleased them all, and the
afternoon slipped away unnoticed.

Suddenly one of the crowd called out, "It's six o'clock! I


hear the horn!"

They quickly scattered, but one after another called


back to Vinzi, "Bring it tomorrow! Bring it with you
tomorrow!"
WHEN VINZI STOPPED, JOS EXCLAIMED, "TEACH ME!"

It was now necessary for Jos and Faz to hurry to drive


their cows together and set off on the homeward journey,
and as Jos was in full run for his cattle, he called:

"Vinzi, keep the little chap with you on the way home;
that will be helping us."

When they approached the house, they saw the father


standing in the doorway waiting to receive them. When they
came near, he called out, "Well, how did you get along the
first day, young cousin? How do you like our pasture?"
"A pipe, look at my pipe!" lustily shouted Russli. "Here,
take it, father, it sounds lovely."

"Look there, the boys are coming with the cattle," said
the father before whose eyes Russli held the pipe. "Go and
show it to your mother. I'll soon come in."

"I love it in the pasture," Vinzi was able to say at last.


"It is so lovely up there under the trees, the day was gone
before we knew it."

"Yes, and Vinzi helped us a lot," added Jos, who had


joined them. "We got on the move with the cows ten times
quicker than we usually do, and they have been so quiet all
day, and grazed as they have not done for a long while. I
wish Vinzi could stay with us all the time!"

"I am glad to hear that!" exclaimed his father. "That's a


good start. Let us hope you will always get along well
together."

He went to the stable with his boys and Vinzi followed,


thinking his cousin would be pleased if he wished to help.

"What can I do?" he asked him from the stable door.

"We'll be through soon," replied his cousin, busily


milking. "But if you would like to look around the barn and
stable, you may do so."

Vinzi stepped out into the twilight and watched the


setting sun tip the mountain cliffs and dark spruces with
gold. Then the chapel bell sounded so sweetly that it filled
him with delight and he stood motionless long after the
glow had paled and the sound of the bell had died away.
"Hello!" cried a voice behind him, while he received a
resounding slap on the back and was dragged over to the
pump where there was a great washing and splashing every
evening before the boys went into the house.

"Are you awake again?" asked Faz who had done the
tugging, fully believing that Vinzi had fallen asleep in the
path.

"Yes, and your fists woke him up before he reached the


water," said Jos. "Isn't that so, Vinzi?"

"Indeed yes," answered Vinzi, "but I had much rather


he should seize hold of me than that he should tell your
father I fell asleep in the path. I really was not asleep."

"Faz doesn't carry tales; he just strikes a blow," said Jos


comfortingly.

And now to the house, with Faz in the lead. The mother
was waiting for them at the table, patiently enduring the
noise Russli was making with his pipe.

"That sounds like a dying cat," remarked Faz as he


entered.

"Don't laugh at him the first time he tries," said his


mother. "He is playing quite cleverly for a little boy. He has
just been praising you, he says you have not cuffed him
once today."

"He only gets a cuff when he deserves it," remarked


Faz. "He was good today because Vinzi held the reins. I
hope he stays with us."

The other three now came in and Russli darted to his


father with the cry, "Now for the pipe!"
"No, no, Russli, first supper and then the pipe," said his
father, seating himself. "You see, when I was a boy I cut
pipes too and had great times playing on them. So I must
have a look at your pipe and see if I can still play."

Russli was satisfied with this, for he smelled the hot


corn-cakes his mother was now serving and he eagerly
attacked his plate.

When the mother had cleared away the supper things,


the father said, "Well, now bring me the pipe and let us
hear what it sounds like."

Russli was a bit sleepy after his feast of corn-cakes, but


the fear that Faz might snatch the pipe from him to carry it
to his father and afterward keep it for himself brought him
to his feet.

"For heaven's sake, what are you bringing me?" asked


his father, taking the long pipe and examining it closely.
"That is no ordinary pipe. It is a real shawm with all the
necessary holes."

Lifting it to his lips, he brought forth something that


sounded almost like a tune.

"Father can do better the first time than any of us after


we had tried many times," said Jos in astonishment. "But
Vinzi can do better than father."

"Then we will listen to him," said his father, handing


Vinzi the pipe.

Vinzi remembered one little tune better than all others,


and he had played it fully ten times that day for the boys.
Alida had taught it to him. He played it now, and as he
came to the end there was intense silence for a moment.
"Yes, he can play differently than I," admitted his
cousin. "I wonder who taught him."

"That was lovely!" sighed his wife, quite overcome. "I


would like our musician to play a hymn that we could all
sing."

"And I can," said Vinzi, "because mother sings a hymn


with us every evening at home. What shall I play?"

"Can you play 'I Sing to You with Heart and Mouth?'"
she asked.

Yes, Vinzi knew it well, and after seeking a little for the
right pitch, played with assurance. The mother sang well
and her husband joined in with a strong bass, and suddenly
Jos lifted his fine voice. Faz growled after his father, then
jumped to his mother's high notes, and Russli squeaked in
between. But the other voices were so strong, that these
false notes did not disturb the song. Mrs. Lesa was so
delighted that she begged for another song directly the first
was finished, and then another and another.

The cousin was highly pleased and declared, "That was


a splendid entertainment and we will have another
tomorrow. It is a good thing to praise God with beautiful
music."

When Vinzi went to his hayrick, his heart was so full of


thanksgiving that he sat in the doorway a long time looking
up into the sky with its myriad of stars.

"Oh, how beautiful it is here, and it grows more lovely!


To praise God with music is something beautiful, Cousin
Lorenz said and tomorrow we will do it again, and so every
day," said Vinzi to himself.
His pipe had pleased his cousin, and that thought added
to Vinzi's happiness. It seemed as though he must sing
aloud, that to do so would only be joining in the great song
of praise that sounded all around him, from the twinkling
stars, the gleaming chapel, the gurgling stream and the
golden moon sailing so majestically above the towering
crags.

The pungent perfume of the hay was lifted by the night


wind, and it was that which at last roused Vinzi. The night
had grown cool, and he quickly closed his door and sought
his comfortable bed.

From that day on, there was music in Lorenz Lesa's


house every evening. One might have supposed it was the
chief work of the day. In fact, the toil of the day was really
behind the singers and so they could enter into the pleasure
of their leisure hours with special joy. It was Vinzi's
particular delight to see that his Cousin Lorenz and his wife
Josepha were the ones who longed most for the music.

Every night at supper she would say, "I suppose Vinzi


will soon begin to play," and after the regular time had been
given to music, her husband would suggest, "It's not too
late for another little song, is it?" For now that he had
started to sing again, he kept recalling the songs he had
sung in his youth, and if Vinzi did not know them, all he did
was to sing them over several times and then Vinzi could
play them perfectly. The others would follow his piping, and
so learn the tune. This afforded Lorenz immense
satisfaction, and after an evening so spent, he would shake
Vinzi's hand and say, "Your music makes a fellow feel quite
young again. Your shawm pipes the joy of youth into my
heart."
CHAPTER VI
STILL HIGHER UP THE MOUNTAIN

THREE weeks after Vinzi had arrived at his cousin's


house, a good friend of his father stopped to see him on his
way to Domo. He brought greetings from Vinzi's father and
mother and said that on his return journey he had promised
to stop at the Lesa home to carry back news of the boy.
Vinzenz and his wife were eager to know how their son took
to the life on the mountain and how he was getting along
with his cousin's family, and whether or not his reserve and
dreamy ways made him a burden.

Lorenz and Josepha were to decide when he was to


return home. When they thought it time to send him, would
they kindly find a companion, or let them know so they
could arrange the matter in Leuk? The man had expected to
return to Leuk in five or six days, and it was now the fifth
day since he had called on them and then journeyed on to
Domo.

Lorenz had just stepped into the room where his wife
was setting the table for supper.

"The man from Leuk will not come today," said Lorenz.
"I suppose he will be here tomorrow, and we must make
him understand the joy Vinzi has brought us."
"Indeed so," his wife agreed. "I was just wondering why
they sent him up here. Certainly we would wish to keep
such a son at home. People do that sort of thing if a boy is
not as he should be, or if he has strange fancies which he
might lose among strangers. But Vinzi is an exceptional boy.
Since he has been in our home, I scarcely know my own
boys. There is Russli, for instance. He had to be dragged to
the pump every morning and while he was being washed,
he would scream and fight for dear life. Now as soon as he
is out of bed, he rushes to the stream behind the hayrick
and thinks it fun to wash himself because Vinzi does it and
likes it. He scrubs himself cleaner than I ever washed him,
just because he wants to be like Vinzi, who certainly always
is spick and span. And now Russli never comes home from
the pasture crying. When I ask him how it happens he
comes home without howling and complaining, he says Faz
doesn't beat him any more because Vinzi takes his part.
When I ask Faz how it is he lets Russli come home in peace,
he declares Vinzi keeps the boy in order so he needs no
beating. Faz says he likes it better so, and wishes Vinzi
would remain with us always. He never talked that way
before, and he liked to hit out. And Jos, who always made
the least trouble, as you yourself must admit—"

"Yes, truly, the eldest son is always the model boy in his
mother's eyes," interrupted her husband.

"Indeed, our Jos is good to look at," continued the wife,


"but Vinzi is even better-mannered. Jos himself has
remarked it and imitates whatever Vinzi does. Good
manners suit him so well that, with a cap on his head and a
mantle over his shoulders such as we see strangers wearing
on the passing stage-coach, he would be taken for a
gentleman's son."

"That's not to be desired," said Lorenz aside.


"And we never had any idea Jos had such a fine voice
until Vinzi came with his music. What lovely times we have
every evening! We are never disturbed any more with one
boy throwing the other under the table, while the third
rocks his chair to pieces. I believe our music has tamed
them all, they are such different boys. Why did your cousin
send his son up here instead of keeping him at home? I
know very well his wife could not have wished it. Now tell
me what you think."

"You may well believe that Vinzenz Lesa had some good
reason," replied her husband. "But I have asked myself the
same question and am unable to answer it. All I remember
is that he told me something about some fault in the boy.
When that man from Leuk asked if Vinzi's reserve and such-
like annoyed us, I recalled that Vinzenz thought our boys
were more interested in their work and wished his son were
so, and thought a summer with us, in altogether different
surroundings, might help him. He was right, for Vinzi is as a
lark now and makes everybody else merrier than they
were."

The happy shouts of the returning boys were now


heard, and the father went outside to help them, while the
mother turned to the kitchen; she could now put the food
on the table, and that would avoid impatience at waiting
and prevent burned throats, too.

Next day the man from Leuk returned from Domo. As


Lorenz seated himself by his side, the caller asked, "Now,
what shall I report?"

"Tell my Cousin Vinzenz everything here is going along


well," began Lorenz, "and say that his boy is happy. He
sings and whistles like a bird in the seed fields, and we all
join in."
"And that we love him as though he belonged to us,"
added Josepha. "Say that we want to keep him until the last
days of autumn."

"Yes," agreed Lorenz, "and we would like it still better if


he would leave the lad with us through the winter. He has
not annoyed anyone on the whole mountain, but on the
contrary, has made them all happy."

"Vinzenz Lesa will be glad to hear that," said the man,


"and I will report to him all you say. Mrs. Lesa will ask how
the boy is looking, but I suppose I will not be able to see
him."

"No; the boys are all on the pasture from six in the
morning till six in the evening, singing and playing the pipe,
and wishing for nothing better," explained Lorenz. "That
news will please my cousin better than if you had found the
lad in the house."

"And tell his mother that she has no need to worry,"


continued Josepha. "Her boy is as lively as a brook trout,
and if he were not, I would care for him as for one of my
own boys."

"Now, that's fine," said the messenger from Leuk, well


satisfied as he started on his way, happy at the news he
could carry to Mrs. Lesa, who had urged him to inquire into
the smallest details—many more than he could remember.

Vinzi had kept his promise to cut beautiful pipes for Jos
and Faz, and there had been such a frenzy of practising that
pipe-playing had come to be their sole entertainment.

They both realized that Vinzi played far better than


they, and to learn just how he did it was their highest
ambition. The piping began as soon as they reached the
pasture in the morning, and continued uninterruptedly as
long as the cows grazed peacefully. Jos and Faz were
leaders among the herd boys round about, and when they
did not appear on the other pastures, little by little the
others sought them on their own, and soon the passion for
music spread.

After the pipes had been whining and screeching


against one another, the players begged Vinzi to play so
they could see how he did it. He was pleased to play as long
as they desired and they crowded close around him to
watch the action of his fingers. It seemed the melodies
flowed forth of themselves; all Vinzi did was to let his
fingers skip lightly over the holes. It looked so simple, each
boy thought now he could do it himself and wanted to be
the first to play. When the expected success did not come,
he would declare that if he had his own pipe and could
practise long enough, things would be different; but who
could do much when he could only keep the precious
instrument for a few minutes; when there were always ten
more eager to use it?

Hence one boy after another came to ask: "Vinzi, what


will you take to cut me a good pipe too?"

And Vinzi always replied readily: "You don't need to give


me anything, but you must wait a while for your pipe, as I
have already promised to make several others."

His Cousin Lorenz was delighted to hear his boys talking


in the evenings about how all the herders, even those as far
up as the hospice, came down to their pasture to hear the
pipe-playing, and that they wanted to learn as well as to
listen.
Vinzi was cutting so many pipes that there were two or
three on each pasture, but there were so many boys that
these did not suffice; each could only play a few notes
before another boy wanted to see what he could do. It took
long practise and much patience to produce a correct note,
and to play a real tune was beyond the ability of most of
them. Thus it came about that the supreme wish of each
boy herder was to own a pipe which Vinzi had carved, for
the pipes the others made did not produce true tones.

Among the group of herders were ten or twelve who


were called the Tower Boys. Vinzi was never sure how many
of them there were, because only a few of them could come
to the Lesa pasture at a time; as on the other pastures,
some must always stay to watch the cattle. At first Vinzi
thought the Tower Boys were all brothers, but then he
found out that they were cousins and belonged to three
households. Already he had made pipes for two of them for
they had been especially eager to own the instruments.

Then Black Vereli, so called on account of his black curly


hair and dark skin, begged so earnestly for a pipe, that
Vinzi was unable to refuse and gave him one which was
already finished, though many of the boys cried jealously,
"The Tower Boys already have two!"

Black Vereli ran off with his prize with many thanks and
shouts of joy.

The following day he came again and hurried up to Vinzi


to say, "I have to watch the cows today, but I have a
message for you. I showed grandfather the pipe and he had
me play for him. When he said I didn't know how to play, I
told him you could do it better than anyone else. Then he
said you must soon pay him a visit and play for him. Go
tomorrow, won't you?" he called back as he ran away.
That evening he told his cousin of the message that
Black Vereli brought and asked what he should do about it.

"Go up to the Tower in the morning," said his cousin,


explaining that the grandfather was the oldest man on the
whole mountainside, and the people usually did what he
wished.

"Whose grandfather is he?" asked Vinzi.

"Of those they call the Tower Boys," answered his


cousin, "and of a lot more who remain at home. Only the
boys who tend the cattle go up there in the summer. He is
really their great, or even their great-great-grandfather. But
that is too long a name, so all his relatives on the mountain
call him grandfather. If all his grandchildren and great-
grandchildren were together, it would make quite a crowd."

"Yes, and Black Vereli is the worst of the lot," added


Faz.

"How so?" asked his father.

"Oh, the Tower Boys are forever playing all kinds of


tricks and Black Vereli is the inventor of them all," explained
Faz. "Jos only keeps in with him because he can yodel so
well."

"Yes, so he can, better than any of them," confirmed


Jos. "But I think the mischief will die down now he has
something else to think about. Vinzi has made him a pipe
and he is determined to practise until he can play on it. And
when he wants a thing, he never gives up until he gets it."

"Those pipes are a real blessing to the whole mountain


for they tame even the worst boys," said the mother,
leaning back comfortably in her armchair.
The next morning when the boys were setting off with
their herd, Lorenz Lesa said to Vinzi, "Go right up to the
Tower, for grandfather goes out to his little bench at the first
peep of dawn, and there he suns himself until evening. You
will have to judge when to return, but stay as long as he
wants you."

And then they were off, Russli a little in the rear with
Vinzi as always. He had listened attentively to his father's
words and now said, "Come back soon. Come down to us
again as soon as you have played for grandfather."

"You heard what your father said," returned Vinzi. "I


must do just what the grandfather wishes. If he wants me
to stay up there all the morning, that is what I must do."

"Then I'll tickle all the cows," threatened Russli quite


savagely.

"That is wicked of you!" exclaimed Vinzi indignantly. "I


always thought you were quite a nice boy. Haven't I stuck
by you, told you stories and played tunes for you? I had
begun to think that what Faz said about you was not true,
but after all I do not know. Do you know what I am going to
do? I am going to stay with Jos and Faz after this, and you
can be by yourself; I'll not go with you any more."

"Then I won't do it," said Russli, half obstinately, half


penitently.

"That's the right way, Russli," said Vinzi, easily


appeased. "And I will carve out something on my way and
bring it back for you. I'll do that every time I go away. Now
what would you like, a walking stick?"

"No," came the decisive answer.


"A flagstaff then?"

"No."

"What would you like?"

"A pipe."

"You got one ever so long ago," asserted Vinzi.

"All the same I want another, and then another. I want a


pipe every time you carve something for me," persisted
Russli stubbornly.

"A pipe it shall be," promised Vinzi.

When they came to the pasture, Jos and Faz drove the
herd to the right of the road toward the larch trees, but
Vinzi continued on his way.

The three boys called out, "Come back soon," over and
over again, and each time Vinzi waved his cap in answer, at
last flinging it up in the all for sheer joy and shouting
repeated hurrahs.

Vinzi had never been so happy. The sun shone out of a


cloudless blue sky over the green fields and rugged
mountain cliffs where the dark firs lifted their branches. Yes,
this was the way he had come, but how different it all
looked today! The scene grew more and more beautiful. The
snow-capped mountain reached out above the wooded
heights. How great and mighty were the gleaming snow-
fields! Oh, how wonderful!

Suddenly a broad stream of light, shining like a wide


silver river, spread right across the entire mountain. It came
without a rustle, without a movement. That was no flowing
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookmass.com

You might also like