We present a new open-source Python package for exact diagonalisation and quantum dynamics of spin(-photon) chains, called QuSpin, supporting the use of various symmetries in 1-dimension and (imaginary) time evolution for chains up to 32 sites in length. The package is well-suited to study, among others, quantum quenches at finite and infinite times, the Eigenstate Thermalisation hypothesis, many-body localisation and other dynamical phase transitions, periodically-driven (Floquet) systems, adiabatic and counter-diabatic ramps, and spin-photon interactions. Moreover, QuSpin's user-friendly interface can easily be used in combination with other Python packages which makes it amenable to a high-level customisation. We explain how to use QuSpin using four detailed examples: (i) Standard exact diagonalisation of XXZ chain (ii) adiabatic ramping of parameters in the many-body localised XXZ model, (iii) heating in the periodically-driven transverse-field Ising model in a parallel field, and (iv) quantised light-atom interactions: recovering the periodically-driven atom in the semi-classical limit of a static Hamiltonian.