Mern Stack Development Training by Experts

;

Our Training Process

Mern Stack Development - Syllabus, Fees & Duration

Module 1: Introduction to React

  • What is React?
  • Why React?
  • React version history
  • React 16 vs React 15
  • Just React – Hello World
  • Using create-react-app
  • Anatomy of react project
  • Running the app
  • Debugging first react app

Module 2: Templating using JSX

  • Working with React. create Element
  • Expressions
  • Using logical operators
  • Specifying attributes
  • Specifying children
  • Fragments

Module 3: About Components

  • Significance of component architecture
  • Types of components
  • Functional
  • Class based
  • Pure
  • Component Composition

Module 4: Working with state and props

  • What is state and it significance
  • Read state and set state
  • Passing data to component using props
  • Validating props using prop Types
  • Supplying default values to props using default Props

Module 5: Rendering lists

  • Using react key prop
  • Using map function to iterate on arrays to generate elements

Module 6: Event handling in React

  • Understanding React event system
  • Understanding Synthetic event
  • Passing arguments to event handlers

Module 7: Understanding component lifecycle and  handling errors

  • Understand the lifecycle methods
  • Handle errors using error boundaries

Module 8: Working with forms

  • Controlled components
  • Uncontrolled components
  • Understand the significance to default Value prop
  • Using react ref prop to get access to DOM element

Module 9: Context

  • What is context
  • When to use context
  • Create Context
  • Context Provider
  • Context Consumer
  • Reading context in class

Module 10: Code-Splitting

  • What is code splitting
  • Why do you need code splitting
  • React lazy
  • Suspense
  • Route-based code splitting

Module 11: hooks

  • What are hooks
  • Why do you need hooks
  • Different types of hooks
  • Using state and effect hooks
  • Rules of hooks

Module 12: Routing with react router

  • Setting up react router
  • Understand routing in single page applications
  • Working with Browser Router and Hash Router components
  • Configuring route with Route component
  • Using Switch component to define routing rules
  • Making routes dynamic using route params
  • Working with nested routes
  • Navigating to pages using Link and NavLink component
  • Redirect routes using Redirect Component
  • Using Prompt component to get consent of user for navigation
  • Path less Route to handle failed matches

Module 14: Immutable.js

  • What is Immutable.js?
  • Immutable collections
  • Lists
  • Maps
  • Sets

Module 17: Unit Testing

  • Understand the significance of unit testing
  • Understand unit testing jargon and tools
  • Unit testing react components with Jest
  • Unit testing react components with enzyme

Module 18: Web pack Primer

  • What is web pack
  • Why web pack
  • Install and setup web pack
  • Working with web pack configuration file
  • Working with loaders
  • Working with plugins
  • Setting up Hot Module Replacement

Module 19: Isomorphic React

  • What is server-side rendering (SSR)?
  • Why SSR
  • Working with render To String and render To Static Markup methods

Syllabus -> React JS
This syllabus is not final and can be customized as per needs/updates
IT Courses / Internship

Module 1: Introduction to Node.js

  • What is Node.js
  • Features of Node.js
  • Concept
  • Where to fit and not fit
  • Event-Driven programming style
  • What is Asynchronous

Module 2: Installation / Setup

  • Local environment setup
  • Node.js runtime
  • Download source code
  • Installation on OS
  • Verify

Module 3: Node Package Manager

  • Install module by NPM
  • Global vs Local setup
  • Update Module
  • CRUD Module

Module 4: Express Framework

  • What is Express
  • Setup Express
  • Request And Response
  • Handling Routes
  • Route Middleware
  • Objects
  • Cookies Management
  • File upload
  • HTTP methods

Module 5: Buffers and Streams

  • What is buffers and Streams
  • Benefit of Streams over buffers
  • Create / Write / Read operation on Buffers
  • Process on Buffers
  • Read / Write data by Streams
  • Pipeline
  • Chaining Stream

Module 7: REST API

  • RESTful Architecture
  • HTTP URI and Methods
  • RESTful web services
  • Expose solution as API
  • Best practice for REST API solution

Module 8: Callback

  • What is Callback
  • Benefit of Callback
  • Asynchronous communications
  • Block and Non-Blocking
  • Standard Callback pattern
  • Async Flow control Library
  • Executing in parallel

Module 9: Events

  • What is Events
  • Events types
  • Event Emitter API
  • Multiple event listeners
  • Event emitter pattern
  • Class methods
  • Event Loop
  • Blocking Event Loop
  • Escaping Event Loop

Module 10: Connecting with Database

  • Introduction of MySQL
  • Connect with MySQL
  • Introduction of MongoDB
  • Features of MongoDB
  • Connect with MongoDB
  • Defining a schema
  • Defining a Model

Module 11: External Processes and Services

  • What is processes
  • Spawning Child process
  • Create and kill processes
  • Building with HTTP Severs
  • HTTP requests
  • Secure HTTP Server

Module 12: External Processes and Services

  • Using Test Runner
  • Using Assertion Testing Module
  • Built-in Debugger
  • Console log
  • Node Inspector

Syllabus -> Node JS
This syllabus is not final and can be customized as per needs/updates
IT Courses / Internship

Module 1 : INTRODUCTION EXPRESS JS

  • The model-view-controller pattern
  • Defining Jade templates
  • Configuring Express
  • Postman configuration
  • Using REST
  • JSON Data
  • Reading POST data
  • CRUD operations
  • Adding middleware

Module 2 : EXPRESS JS WITH MONGODB AND SQLITE

  • Connecting to RDBMS and Mongodb databases
  • Performing CRUD operations
  • Module 3 : SOCKET.IO, THE FRONT-END, AND A CHAT APP

    • Getting Started
    • Adding Socket.io To Your App
    • Exploring The Front-end
    • Sending Live Data Back & Forth
    • Creating The Front-end UI
    • Showing Messages In App
    • Working With Time
    • Timestamps
    • Show Message Time In Chat App
    • Chat application Project

    Module 4 : INTRODUCTION TO TASK MANAGERS WITH UNIT TESTING

    • Working with gulp
    • Working with grunt
    • Working with unit and E2E testing

    Module 5: LEARNING EXPRESS ROUTES

    • starting a server
    • Writing your first route
    • Sending a response
    • Macthing route paths
    • Getting a single expression
    • Setting status codes
    • Macthing longer paths
    • Other HTTP methods

    Syllabus -> Express JS
    This syllabus is not final and can be customized as per needs/updates
    IT Courses / Internship

    Module 1: Introduction to NoSQL

    • What Is NoSQL?
    • Why NoSQL databases are required
    • Types of NoSQL Database
    • NoSQL vs SQL Comparison
    • ACID & BASE Property
    • CAP Theorem
    • Benefits of NoSQL databases
    • Installation
    • Start and Stop the MongoDB process

    Module 2: MongoDB Architecture

    • Document, Collection, Databases
    • JSON and BSON
    • Storage Engines
    • Read Path
    • Journaling
    • Write Path
    • Working Set
    • Capped Collection
    • Oplog collection
    • TTL Index
    • GridFS

    Module 3: CRUD Operations

    • MongoDB Data Types
    • Inserting, Update, Deleting the documents
    • Querying the documents
    • Bulk insert operation
    • Updating multiple document
    • Limiting documents
    • Filtering documents

    Module 4: Schema Design and Data modeling

    • Dynamic Schema
    • What is Data modeling?
    • RDBMS and MongoDB Data modeling difference
    • Embedding Document
    • Reference Document

    Module 5: Indexes

    • Index concepts in MongoDB
    • Types of indexes
    • Indexes and its use cases
    • Creating Indexes
    • Managing Indexes
    • Index strategies

    Module 6: Database Administration in MongoDB

    • Database status
    • Troubleshooting issues
    • Current Operations
    • Rotating log files
    • Users and Roles
    • Copy and Clone database
    • DB and Collection Stats
    • Explain plan
    • Profiling
    • Changing configuration files
    • Upgrading the database

    Module 7: MongoDB: Backup and Security

    • Concept of backups
    • mongoexport/mongoimport
    • mongodump/mongorestore
    • Oplog backups
    • LVM Backups
    • Backups using MMS/Ops Manager
    • Purpose of security
    • Authentication and authorization
    • Role based access control

    Module 8: Replication in MongoDB

    • Concept of replication
    • ReplicaSet member roles
    • Voting and Electing primary
    • Role of Oplog in replication
    • Read and Write Concern
    • Arbiter,Hidden and Delayed replica node
    • Priority settings
    • Replicaset nodes health check
    • Concept of resyncing the nodes
    • Rollbacks during failover
    • Keyfile authentication

    Module 9: MongoDB Scalability

    • Concept of Scalability
    • Sharding concept
    • Shardkey and Chunks
    • Choosing shardkey
    • Sharding components
    • Types of Sharding
    • Balanced data distribution
    • Sharded and Non-sharded collection
    • Sharded Replicaset
    • Tag aware sharding

    Module 10: MongoDB Monitoring and Other Tools

    • MMS Manager
    • Ops Manager
    • Mongo utility commands
    • Mongo developer tools
    • MongoDB Atlas
    • MongoDB client drivers

    Syllabus -> MongoDB
    This syllabus is not final and can be customized as per needs/updates
    IT Courses / Internship
     
    10000+
    20+
    50+
    25+

    Mern Stack Development Jobs in Toronto

    Enjoy the demand

    Find jobs related to Mern Stack Development in search engines (Google, Bing, Yahoo) and recruitment websites (monsterindia, placementindia, naukri, jobsNEAR.in, indeed.co.in, shine.com etc.) based in Toronto, chennai and europe countries. You can find many jobs for freshers related to the job positions in Toronto.

    • mern stack developer
    • mern stack
    • mern stack programmer
    • reach js developer
    • node js developer
    • express js developer
    • mern stack expert
    • mern stack fresher
    • full stack developer
    • mongo db

    Mern Stack Development Internship/Course Details

    Mern Stack Development internship jobs in Toronto
    Mern Stack Development Be it web development or mobile application development, developers intimate with JavaScript can effortlessly learn ReactJS. js for developing web applications. React web framework is currently being used by reputed companies including Netflix, NASA, BBC, Facebook, Paypal, etc. built-in scaling is a must-have feature of many organizations, as you adapt to an ever-changing market. js has a huge opportunity today and tomorrow. js is a straightforward programming language. The modular design of ReactJS allows you to produce small fluctuations with ease. The training costs for developers are usually high, but when it comes to Node. How is it achievable that a simple library has gotten so popular? You may have caught on to ReactJS before, seeing a lot of people talking about it, a lot of people using it, and a bunch of products made by this technology. React(also referred to as React.

    Meet a Few of our Industry Experts 🚀 Your Pathway to IT Career

    Madhu

    Mobile: +91 9895490866
    Location: Delhi, Online (Toronto)
    Qualification: MCA

    Experience: I hold 1 year of experience in the field Python development & also have knowledge in Artificial intelligence and Machine  more..

    Aman

    Mobile: +91 91884 77559
    Location: Uttarakhand, Online (Toronto)
    Qualification: BCA

    Experience: C++ programming Language C programming Language Data structures using C++ HTML CSS  more..

    ghanshyam

    Mobile: +91 91884 77559
    Location: Pinjore, Online (Toronto)
    Qualification: Diploma in Electronics and Communication

    Experience: QA testing and team management | Resume for   more..

    Sneha

    Mobile: +91 91884 77559
    Location: Kerala, Online (Toronto)
    Qualification: Bachelor's degree

    Experience: Thank you for the opportunity to apply Cyber Security Expert role at your company I have completed my graduation in  more..

    Umapathi

    Mobile: +91 91884 77559
    Location: Dharmapuri, Online (Toronto)
    Qualification: BE/EEE

    Experience: Selenium automation Manual testing Regression testing | Resume for   more..

    Vikash

    Mobile: +91 9895490866
    Location: Mumbai , Online (Toronto)
    Qualification: B.tech

    Experience: Manual testing   more..

    Diljith

    Mobile: +91 91884 77559
    Location: Kerala, Online (Toronto)
    Qualification: Master of computer application

    Experience: I have done 4 month intership in Software testing and i gained manual and automation testing(selenium testNg java maven jenkins  more..

    Nafiya

    Mobile: +91 98474 90866
    Location: Kerala, Online (Toronto)
    Qualification: Mca

    Experience: I have one year experience as php developer internship experience in django python currently persuing angular front end frame work  more..

    Arif

    Mobile: +91 8301010866
    Location: Indore, Online (Toronto)
    Qualification: B. E.

    Experience: I am fresh python developer I have also completed django HTML CSS JavaScript certificate course I am enthusiastic to work  more..

    santhosh

    Mobile: +91 98474 90866
    Location: Chennai, Online (Toronto)
    Qualification: B.com

    Experience: Adobe Photoshop Illustrator and Autodesk Maya Begineer in Blender & after effects I worked image Applications catalogues & Brouchers &  more..

    Yellamalla

    Mobile: +91 91884 77559
    Location: Telangana, Online (Toronto)
    Qualification: BTech

    Experience: C Java python HTML and CSS SQL I'm a fresher  more..

    Aarti

    Mobile: +91 98474 90866
    Location: Chandigarh, Online (Toronto)
    Qualification: BA

    Experience: Hi Sir Madam I am Aarti Sheelpkar an immediate joiner looking for a better opportunity as a software test engineer  more..

    Anupama

    Mobile: +91 9895490866
    Location: Kochi, Online (Toronto)
    Qualification: Btech

    Experience: Manual testing automation testing selenium Appium Jmeter SQL Java  more..

    Ajay

    Mobile: +91 9446600368
    Location: Jharkhand, Online (Toronto)
    Qualification: b.tech

    Experience: software testing |   more..

    Debjit

    Mobile: +91 9895490866
    Location: West Bengal, Online (Toronto)
    Qualification: Secondary Education

    Experience: I'm Debjit Pal a passionate cybersecurity engineer with a knack for penetration testing and web application security Mastering Kali Linux  more..

    SOPHIA

    Mobile: +91 8301010866
    Location: Kerala, Online (Toronto)
    Qualification: M.Sc, M.Phil Zoology

    Experience: • Hard working Biology Teacher with assessment skills to assist students from a variety of backgrounds and abilities • Focused  more..

    Rohit

    Mobile: +91 8301010866
    Location: Karnataka, Online (Toronto)
    Qualification: B tech in Computer Science specialisation (Software Engineering)

    Experience: Software Testing Manual Testing Automation testing Devops and front end development |   more..

    Manali

    Mobile: +91 91884 77559
    Location: Maharashtra, Online (Toronto)
    Qualification: BTech

    Experience: I have 1 5 year experience in wordpress developer I have successfully designed and developed multiple websites using various themes  more..

    SUMI

    Mobile: +91 9895490866
    Location: Kochi, Online (Toronto)
    Qualification: Mtech

    Experience: Fresher in testing field Completed software testing course(manual automation) and looking for testing related job  more..

    Priyanka

    Mobile: +91 89210 61945
    Location: Maharashtra, Online (Toronto)
    Qualification: BE

    Experience: Testrail Jira Automation Testing Manual testing |   more..

    abhishek

    Mobile: +91 91884 77559
    Location: Kerala, Online (Toronto)
    Qualification: bcom

    Experience: python django rest api third party api react js postgres docker aws rds cicd pipeline jira git css tailwindcss bootstrap  more..

    samiksha

    Mobile: +91 9895490866
    Location: pune, Online (Toronto)
    Qualification: B.E.

    Experience: Highly skilled with 6 month experience in python django developer mysql Api Integration familiar with frontend Application for Python Django  more..

    suchita

    Mobile: +91 91884 77559
    Location: Bhopal , Online (Toronto)
    Qualification: B.sc

    Experience: Seo smo ppc social media post design logo design video editing background change etc   more..

    kunal

    Mobile: +91 8301010866
    Location: Delhi, Online (Toronto)
    Qualification: Btech in cse

    Experience: I have more 1 years of experience in flutter development and i have published apps on play store and apple  more..

    Tanisha

    Mobile: +91 89210 61945
    Location: Uttar Pradesh, Online (Toronto)
    Qualification: 12th Pass(non medical)

    Experience: Dedicated Teacher with a strong commitment to addressing children’s educational needs and fostering their development Expert in creating comprehensive lesson  more..

    Bhargavi

    Mobile: +91 9895490866
    Location: Salem, Online (Toronto)
    Qualification: B.Tech

    Experience: Have basic knowledge on python and Django Application for Python Django  more..

    Eapen

    Mobile: +91 91884 77559
    Location: Kochi, Online (Toronto)
    Qualification: B.Tech, IIT Kharagpur

    Experience: I am an engineer with experience in automated mapping full cycle of software development project management and quality management I  more..

    Masleeha

    Mobile: +91 89210 61945
    Location: Kerala, Online (Toronto)
    Qualification: MSc psychology

    Experience: Skills Counselling and psychotherapy Empathy and patience Academic writing and presentation skills Psychological testing and interpreting Experience Worked as Consultant  more..

    Nabila

    Mobile: +91 8301010866
    Location: Kerala, Online (Toronto)
    Qualification: Diploma in Computer Engineering

    Experience: Hi I have 11 years of experience as a Computer Instructor in an Engineering College I have experience in programming  more..

    Jenish

    Mobile: +91 8301010866
    Location: surat, Online (Toronto)
    Qualification: it diploma

    Experience: senior flutter developer | Resume for   more..

    KARTHIK

    Mobile: +91 89210 61945
    Location: Telangana, Online (Toronto)
    Qualification: MSc

    Experience: manual testing automation testing selenium java cucumber  more..

    Meesala

    Mobile: +91 91884 77559
    Location: Hyderabad, Online (Toronto)
    Qualification: B.tech

    Experience: Manual testing automation testing c core java Experience:0 | Resume for   more..

    Nagaarjun

    Mobile: +91 91884 77559
    Location: Puducherry, Online (Toronto)
    Qualification: Msc computer science

    Experience: Web developer Service engineer Cctv engineer  more..

    Priyam

    Mobile: +91 9895490866
    Location: Madhya Pradesh, Online (Toronto)
    Qualification: B.Tech

    Experience: 2 10 years of experience in manual Testing and knowledge in automation testing Skills- manual testing web application testing android  more..

    Ritika

    Mobile: +91 89210 61945
    Location: Bhopal, Online (Toronto)
    Qualification: BTech CSE

    Experience: Full Stack developer -Jubilingo Solutions •Developed an Ecommerce website with two interfaces for admin and clients with the help of  more..

    Supriya

    Mobile: +91 91884 77559
    Location: Maharashtra, Online (Toronto)
    Qualification: B.E computert

    Experience: Java c++ html postman jira manual testing automation testing selenium cucumber testing maven API MySQL powerbi  more..

    shriram

    Mobile: +91 89210 61945
    Location: Jaipur , Online (Toronto)
    Qualification: Btech

    Experience: Node mongodb Graphql and react   more..

    Abhinav

    Mobile: +91 91884 77559
    Location: Uttar Pradesh, Online (Toronto)
    Qualification: post graduate

    Experience: - Strong proficiency in programming languages: C Python JavaScript - Experience with web development technologies: React JS HTML CSS -  more..

    Anumol

    Mobile: +91 98474 90866
    Location: Kerala, Online (Toronto)
    Qualification: Btech

    Experience: I have 1 year experience in fullstack developer Python django rest api html css bootstrap db  more..

    sonali

    Mobile: +91 9895490866
    Location: Telangana, Online (Toronto)
    Qualification: MCA

    Experience: I have experienced in flutter java Android dart getx firebase  more..

    Manikandan

    Mobile: +91 8301010866
    Location: Tamil Nadu, Online (Toronto)
    Qualification: BE CSE

    Experience: I am python fullstack developer I have 2 years 2 months Experience My Skills 1 python 2 django 3 fastapi  more..

    Sachin

    Mobile: +91 89210 61945
    Location: Amravati Maharashtra, Online (Toronto)
    Qualification: BTech

    Experience: ISTQB Foundation Level Certification Functional Testing Regression Testing Smoke Testing Selenium Java TestNg Playwright Postman API testing using postman |  more..

    Prabu

    Mobile: +91 91884 77559
    Location: Chennai, Online (Toronto)
    Qualification: MCA

    Experience: c# asp net mvc javascript jquery linq entity framework webapi sql server vb net webforsm winforms six months experience in  more..

    Akshay

    Mobile: +91 9895490866
    Location: Maharashtra, Online (Toronto)
    Qualification: BE

    Experience: Hi Team This is Akshay Patil I am interested in getting the opportunity that is offered by your company I'm  more..

    Gunapriya.

    Mobile: +91 9895490866
    Location: Tamil Nadu, Online (Toronto)
    Qualification: Bachelor of computer application

    Experience: I have 6 months experience in education technology company named bdreamz global solution(besant technology) but they didn't provide proper pay  more..

    Ashutosh

    Mobile: +91 8301010866
    Location: Uttarakhand, Online (Toronto)
    Qualification: Graduate

    Experience: I am proficient in Flutter dart Google Firebase Postman C Java Python REST API integration Riverpod UI Development I am  more..

    Gunasekar

    Mobile: +91 9895490866
    Location: Tamil Nadu, Online (Toronto)
    Qualification: BE.EEE

    Experience: As a fresher with a 2023 pass-out I possess robust technical skills in Python MySQL Django HTML CSS and more  more..

    Sharanabasappa

    Mobile: +91 8301010866
    Location: Karnataka, Online (Toronto)
    Qualification: Bachelor of engineering

    Experience: I am trained person in Qspider testing training centre Bengaluru  more..

    Jenitta

    Mobile: +91 91884 77559
    Location: Tamil Nadu, Online (Toronto)
    Qualification: B.sc,B.ed ( Ad .Tech )

    Experience: Brand design Flyer design Standee Hoarding design Mock ups Application design  more..

    Khushboo

    Mobile: +91 91884 77559
    Location: Goa, Online (Toronto)
    Qualification: B.E in Information Technology

    Experience: Figma python php javascript css sql  more..

    Aswin

    Mobile: +91 9895490866
    Location: Kerala, Online (Toronto)
    Qualification: MCA

    Experience: Good in python django done projects in django postgresql basics of rust  more..

    Nitesh

    Mobile: +91 98474 90866
    Location: Punjab, Online (Toronto)
    Qualification: Bsc. IT

    Experience: For web development- HTML CSS JS Bootstrap For Graphic Designing - Photoshop Adobe Illustrator Adobe Xd Typography Color Theory |  more..

    Ashish

    Mobile: +91 98474 90866
    Location: Madhya Pradesh, Online (Toronto)
    Qualification: MSC-IT

    Experience: 1 year continuous experience of ITSAR standard IOT & network penetration testing Web penetration testing security development   more..

    Krrish

    Mobile: +91 9446600368
    Location: Rajkot, Online (Toronto)
    Qualification: Diploma

    Experience: 1 yr Experience in web designing and wordpress  more..

    Prosen

    Mobile: +91 91884 77559
    Location: West Bengal, Online (Toronto)
    Qualification: B.Sc. (H)in Advance networking & cyber security

    Experience: I have a experience in Network engineer Company is Benchmark infotech service pvt ltd I have skill Device configuration Ethical  more..

    Sagarika

    Mobile: +91 9446600368
    Location: Odisha, Online (Toronto)
    Qualification: Master degree

    Experience: I have experienced in teaching and administrative assistant at different reputed organisations Beside these I have guided students in non  more..

    TARUN

    Mobile: +91 9446600368
    Location: Dadri, Gautam Buddha Nagar, Online (Toronto)
    Qualification: B.Tech(computer science and engineering)

    Experience: Having 1 year of experience as a Full stack developer Application for Python Django  more..

    Abhinav

    Mobile: +91 9446600368
    Location: Kerala, Online (Toronto)
    Qualification: Btech

    Experience: Flutter-1 experience Web development-1 Python -2  more..

    Mubashshir

    Mobile: +91 8301010866
    Location: Delhi, Online (Toronto)
    Qualification: Bachelor's of Technology in Computer Science

    Experience: I am Mubashshir Fidausi a proficient Flutter Developer with experience in developing cross-platform mobile applications for Android and iOS using  more..

    deepthy

    Mobile: +91 89210 61945
    Location: thrissur, Online (Toronto)
    Qualification: btech

    Experience: more than one year experience in IOS development   more..

    Success Stories

    The enviable salary packages and track record of our previous students are the proof of our excellence. Please go through our students' reviews about our training methods and faculty and compare it to the recorded video classes that most of the other institutes offer. See for yourself how TechnoMaster is truly unique.

    Photos of Training / Internships

    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto
    Internship/projects in toronto

    Trained more than 10000+ students who trust Nestsoft TechnoMaster

    Get Your Personal Trainer