Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Arrow up icon
GO TO TOP
Phoenix Web Development

You're reading from   Phoenix Web Development Create rich web applications using functional programming techniques with Phoenix and Elixir

Arrow left icon
Product type Paperback
Published in Apr 2018
Publisher Packt
ISBN-13 9781787284197
Length 406 pages
Edition 1st Edition
Languages
Tools
Arrow right icon
Author (1):
Arrow left icon
Brandon Richey Brandon Richey
Author Profile Icon Brandon Richey
Brandon Richey
Arrow right icon
View More author details
Toc

Table of Contents (19) Chapters Close

Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
1. A Brief Introduction to Elixir and Phoenix FREE CHAPTER 2. Building Controllers, Views, and Templates 3. Storing and Retrieving Vote Data with Ecto Pages 4. Introducing User Accounts and Sessions 5. Validations, Errors, and Tying Loose Ends 6. Live Voting with Phoenix 7. Improving Our Application and Adding Features 8. Adding Chat to Your Phoenix Application 9. Using Presence and ETS in Phoenix 10. Working with Elixir's Concurrency Model 11. Implementing OAuth in Our Application 12. Building an API and Deploying 1. Other Books You May Enjoy Index

Index

A

  • action
    • creating, in controller / Creating the new action in the controller
  • alias statement / Your objects have no power here
  • API
    • building / Building our API
    • building, in code / Building an API in Code
    • restrictions / Authenticating Against our API
    • flow / Authenticating Against our API
    • user, allowing to navigate to profile page / Allowing a user to navigate to their profile page
    • error, handling / Dealing with Error Handling in APIs
    • resource show, implementing / Implementing an API Resource Show
    • error handler, adding for JSON errors / Adding an Error Handler for 404s for JSON
  • API keys
    • introducing, to database / Introducing API keys to the database
    • validating / Validating API Keys
  • API Request
    • expanding / Expanding Our API Request
  • application structure, Phoenix
    • configuration files / Configuration files
    • assets files / Assets files
    • private files / Private files
    • test directory / Tests
    • directories / Other directories
    • lib / The most important directory: lib
  • assets files / Assets files
  • associations
    • gotchas / Understanding the gotchas of associations

B

  • broken tests
    • fixing / Fixing the broken tests

C

  • call function
    • implementing / Implementing the cast and call logic
  • cast function
    • implementing / Implementing the cast and call logic
  • channel functionality
    • moving / Moving the channel functionality to show
  • channels
    • building, in Phoenix / Building channels and topics in Phoenix
    • about / Understanding channels
    • messages, sending / Sending and receiving messages with channels
    • messages, receiving / Sending and receiving messages with channels
  • channel tests
    • starting / Starting our channel tests
  • chat channel
    • creating / Creating our chat channel
  • chat messages
    • sending / Sending chat messages
  • chat schema
    • working with / Working with the chat schema
    • building / Building the chat schema
    • message functionality, designing / Designing our message functionality
    • message functions, implementing in context / Implementing message functions in our context
    • unit tests, writing / Writing our unit tests
  • chat UI
    • creating / Creating the chat UI
    • building / Building the UI Itself
  • code
    • API, building / Building an API in Code
  • concurrency model, Elixir
    • about / Introduction to Elixir's concurrency model
    • versus, parallelism / The difference between concurrency and parallelism
    • process execution scenarios / Run process 1, Run process 1 and process 2 at the same time
    • OTP / Talking about OTP/understanding the model
    • example, working with / Working with an example
    • exploring / Diving deeper into the concurrency model
    • process scenario / The model - what is a process?
    • process crash scenario / The model - what if our process crashes?
    • task scenario / The model - what is a task?
    • test scenario / The model - what is a task?
    • agent / The model - what is an agent?
    • supervisor / The model - what is a supervisor?
    • application / The model - what is an application?
  • configuration files / Configuration files
  • conflict-free replicated data types (CRDTs) / What is Presence?
  • contexts
    • about / Understanding the role of contexts
    • Votes context, creating / Creating a Votes context
    • data list, grabbing / Grabbing a list of data
    • Ecto query, writing / Understanding Ecto query writing
    • hooking up, to controller / Hooking up the context to our controller
  • controller
    • tests, writing / Writing controller tests
    • code behind tests / Understanding the code behind tests
    • action, creating / Creating the new action in the controller
  • create function
    • creating / Creating our create function
  • CRUD / Designing our message functionality

D

  • data
    • passing, to templates / Passing data to our templates
  • database
    • file uploads, hooking up / Hooking up the uploads to our database
    • API keys, introducing / Introducing API keys to the database
  • development seeds file
    • building / Building a good development seeds file
  • directories / Other directories

E

  • Ecto query
    • writing / Understanding Ecto query writing
  • Elixir
    • about / Introducing IEx and Elixir
    • variables / Variables in Elixir
    • immutability / Immutability in Elixir
    • types / Understanding the different types in Elixir
  • ES2015 syntax
    • working / Working with ES2015 syntax
    • imports / Imports and exports
    • exports / Imports and exports
    • let variable / let and const
    • const variable / let and const
    • fat-arrow functions / Fat-arrow functions
    • variable destructuring / Variable and argument destructuring
    • argument destructuring / Variable and argument destructuring
  • ETS
    • utilizing, for app enhancement / Utilizing Presence and ETS to make our app more robust
    • using / Using ETS
    • need for / Why use ETS?
    • experimenting, with in IEX window / Experimenting with ETS in an IEx window
    • table, creating / Creating our Presence ETS table and GenServer
    • Presence data, storing / Storing Presence data in ETS
    • Presence data, retrieving / Retrieving Presence data in ETS

F

  • features
    • designing / Designing and implementing our new features
    • implementing / Designing and implementing our new features
  • file uploads
    • implementing, in Phoenix / Implementing file uploads in Phoenix
    • working with, in Phoenix / Working with uploads in Phoenix
    • adding, to poll UI / Adding file uploads to our new poll UI
    • hooking up, to database / Hooking up the uploads to our database
    • migration file, writing / Writing the migration file
    • schema, modifying / Modifying the schema and the context code
    • context code, modifying / Modifying the schema and the context code

G

  • GenServer
    • creating / Creating our Presence ETS table and GenServer
    • setting up / Setting up the GenServer
    • public interface, creating for / Creating the public interface for the GenServer
    • cast function, implementing / Implementing the cast and call logic
    • call function, implementing / Implementing the cast and call logic
    • hooking up, to application / Hooking up the GenServer to our application
    • using / Using GenServers
  • Google
    • OAuth login support, adding with Ueberauth / Adding OAuth login support for Google with Ueberauth
    • configuring, for OAuth / Configuring Google to allow OAuth
    • Ueberauth, configuring / Configuring Ueberauth in Google
  • Google OAuth
    • implementing, for Ueberauth / Implementing Google OAuth for Ueberauth and Phoenix
    • implementing, for Phoenix / Implementing Google OAuth for Ueberauth and Phoenix

H

  • helpers
    • using / Using IEx and helpers to understand types
  • h helper function / Getting more information with the h helper

I

  • IEx
    • about / Introducing IEx and Elixir, What is IEx?
    • i helper function / Getting more information with the i helper
    • h helper function / Getting more information with the h helper
    • using / Using IEx and helpers to understand types
    • ETS, experimenting with / Experimenting with ETS in an IEx window
  • i helper function / Getting more information with the i helper
  • image uploads
    • votes context, completing / Completing the votes context for the image uploads
  • import statement / Your objects have no power here
  • index poll
    • hooking up / Hooking up our polls index

J

  • JavaScript code
    • hooking up, to Phoenix / Hooking up the new JavaScript code to Phoenix
  • JSON
    • error handler, adding for 404s / Adding an Error Handler for 404s for JSON

L

  • lib / The most important directory: lib

M

  • migration
    • creating / Creating a new migration
  • modules / Your objects have no power here

N

  • named import / Imports and exports

O

  • OAuth
    • user experience, securing / Solidifying the new user experience
  • OAuth login support
    • adding, for Twitter with Ueberauth / Adding OAuth login support for Twitter with Ueberauth
    • adding, for Google with Ueberauth / Adding OAuth login support for Google with Ueberauth
  • Options
    • table migration, creating / Creating our Options table migration
    • schema, creating / Creating our Option schema
    • associations, gotchas / Understanding the gotchas of associations

P

  • Phoenix
    • about / Introduction to Phoenix
    • reference link / Introduction to Phoenix
    • mix task, executing / Running the Phoenix Mix Task
    • application structure / Phoenix's default application structure
    • data flow / A note about how data flows in Phoenix
    • channels, building / Building channels and topics in Phoenix
    • topics, building / Building channels and topics in Phoenix
    • users, voting / Allowing users to vote on polls
    • file uploads, implementing / Implementing file uploads in Phoenix
    • file uploads, working with / Working with uploads in Phoenix
    • chat, adding / Adding chat to a Phoenix application
    • navigation, fixing / Fixing navigation in our application
    • JavaScript code, hooking up / Hooking up the new JavaScript code to Phoenix
    • Twitter login, configuring / Configuring the Twitter login process in Phoenix
    • Twitter login, implementing / Implementing the Twitter login in Phoenix
    • Google OAuth, implementing / Implementing Google OAuth for Ueberauth and Phoenix
    • applications, deploying to production / Deploying Phoenix applications to production
  • Phoenix 1.3
    • installing / Installing Phoenix 1.3
  • Phoenix connections
    • flow / Understanding the flow of Phoenix connections
  • Phoenix project
    • creating / Creating a new Phoenix project
  • Phoenix server
    • executing / Running the Phoenix server for the first time
  • poll
    • table migration, creating / Creating the Polls table migration
    • schema, creating / Creating our Poll schema
    • schema, testing / Testing our Poll schema
    • creating / Creating a new poll
    • create function, creating / Creating our create function
    • connecting, to users / Connecting polls to users
    • migration, creating / Creating the migration
    • schemas, modifying / Modifying the schemas
    • broken poll tests, fixing / Fixing broken poll tests
    • user ID, sending through controller / Sending a user ID through the controller
    • access, restricting via sessions / Restricting access via sessions
    • validations / Working with validations and errors
    • errors, handling / Working with validations and errors
  • poll chats
    • refactoring / Refactoring for poll chats
  • poll controller
    • creating / Creating a poll controller
    • structure / Understanding the controller's structure
    • building / Building the poll controller
    • templates / Understanding templates
    • test, writing / Writing the poll controller test
  • poll UI
    • file uploads, adding / Adding file uploads to our new poll UI
  • Presence
    • utilizing, for app enhancement / Utilizing Presence and ETS to make our app more robust
    • about / What is Presence?
    • chat UI, updating / Updating our chat UI
    • Elixir implementation / Elixir implementation
    • JavaScript implementation / JavaScript implementation
    • ETS table, creating / Creating our Presence ETS table and GenServer
    • GenServer, creating / Creating our Presence ETS table and GenServer
    • data, storing in ETS / Storing Presence data in ETS, Retrieving Presence data in ETS
    • data, retrieving in ETS / Retrieving Presence data in ETS
  • private files / Private files
  • production
    • Phoenix, applications deploying / Deploying Phoenix applications to production
    • deployment, requisites / Initial requirements for deployment into production
    • deployment, strategies / Alternative Deployment Strategies
  • Psequel / Creating our user schema
  • public interface
    • creating, for GenServer / Creating the public interface for the GenServer

R

  • Read-Evaluate-Print-Loop (REPL) / What is IEx?

S

  • schema / Understanding the role of schemas
  • Social Voting project
    • creating / Creating our Social Voting project
  • socket
    • about / Understanding sockets
    • loading / Conditionally loading our socket
    • messages, sending / Sending messages on the socket

T

  • templates
    • about / Understanding templates
    • data, passing / Passing data to our templates
  • test directory / Tests
  • tests
    • fixing / Fixing up our tests
    • suite, fixing / Returning to a passing test suite
    • shoring / Shoring up our tests
  • topics
    • building, in Phoenix / Building channels and topics in Phoenix
  • Twitter
    • OAuth login support, adding with Ueberauth / Adding OAuth login support for Twitter with Ueberauth
    • application, setting up / Setting up our application with Twitter
    • reference link / Setting up our application with Twitter
    • login process, configuring in Phoenix / Configuring the Twitter login process in Phoenix
    • users schema, modifying / Modifying the users schema
    • login, implementing in Phoenix / Implementing the Twitter login in Phoenix

U

  • Ueberauth
    • login support, adding / Adding Ueberauth support
    • used, for adding OAuth login support to Twitter / Adding OAuth login support for Twitter with Ueberauth
    • used, for adding OAuth login support to Google / Adding OAuth login support for Google with Ueberauth
    • configuring, in Google / Configuring Ueberauth in Google
    • Google OAuth, implementing / Implementing Google OAuth for Ueberauth and Phoenix
  • unit tests
    • writing / Writing our unit tests
  • user accounts
    • adding / Adding user accounts
    • user schema, designing / Designing our user schema
    • user schema, creating / Creating our user schema
    • account context, creating / Creating our accounts context
    • user unit tests, writing / Writing our user unit tests
    • user signup page, creating / Creating a user signup page
    • routes, creating / Creating the routes
    • controller code, creating / Creating the controller code (with tests)
    • password functionality, setting up / Setting up the password functionality
    • Comeonin, installing / Installing Comeonin
    • Comeonin, adding to user schema file / Adding Comeonin to the user schema file
    • tests, updating / Updating our tests
    • UI, updating to include password fields / Updating the UI to include password fields
    • user login page, creating / Creating a user login page
    • create session function, building / Building our create session function
    • session controller tests, writing / Writing session controller tests
  • user experience
    • securing / Solidifying the new user experience
    • tests, shoring / Shoring up our tests
    • development seeds file, building / Building a good development seeds file
    • securing, with development seeds file / Building a good development seeds file
    • index poll, hooking up / Hooking up our polls index
  • user ID, poll
    • sending, through controller / Sending a user ID through the controller
    • data, retrieving from sessions / Retrieving data from sessions
    • tests, writing for Poll Controller / Writing our Poll Controller's tests

V

  • validations
    • validate_change / Working with validations and errors
    • validate_confirmation / Working with validations and errors
    • validate_format / Working with validations and errors
    • validate_length / Working with validations and errors
    • validate_number / Working with validations and errors
    • validate_required / Working with validations and errors
    • unique_constraint / Working with validations and errors
  • validations, polls
    • unique usernames, creating / Making usernames unique
    • custom validations, writing / Writing custom validations
    • validation errors, displaying in forms / Displaying validation errors in our forms
  • variables, Elixir / Variables in Elixir
  • virtual fields / Designing our user schema
  • vote record migration
    • creating / Creating the vote record migration
  • vote record schema
    • creating / Creating the vote record schema
  • votes context
    • creating / Creating a Votes context
    • completing, for image uploads / Completing the votes context for the image uploads
  • voting
    • manual methods, creating / Making voting real-time
    • dummy functionality, building / Building our dummy functionality
    • dummy code, changing to server / Changing our dummy code to push to the server
    • server channel code, writing / Writing our server channel code for live voting
    • channels, refactoring from index / Refactoring our channels away from the index
    • channel functionality, moving / Moving the channel functionality to show
  • voting restrictions
    • implementing / Implementing voting restrictions
    • vote record migration, creating / Creating the vote record migration
    • vote record schema, creating / Creating the vote record schema
    • hooking up / Hooking up restrictions
lock icon The rest of the chapter is locked
arrow left Previous Section
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime
Visually different images