[proofplan]
We construct, for an arbitrary left $R$-module $M$, a free left $R$-module generated by the underlying set of $M$. The canonical map from this free module to $M$ sends the basis element indexed by $m \in M$ to $m$, and it is surjective because every element of $M$ is hit by its own basis vector. Finally, we prove directly that this free module is projective by lifting maps along surjective homomorphisms basis element by basis element.
[/proofplan]
[step:Construct the free module generated by the underlying set of $M$]
Let $M$ be a left $R$-module. Let $S$ denote the underlying set of $M$. Define the left $R$-module
\begin{align*}
F := \bigoplus_{s \in S} R e_s,
\end{align*}
where $e_s$ denotes the standard generator in the copy of $R$ indexed by $s$.
Equivalently, every element of $F$ has a unique finite expression
\begin{align*}
\sum_{i=1}^{n} r_i e_{s_i},
\end{align*}
with $n \in \mathbb{N}$, $r_i \in R$, and $s_i \in S$. Define a map
\begin{align*}
\pi: F &\to M \\
\sum_{i=1}^{n} r_i e_{s_i} &\mapsto \sum_{i=1}^{n} r_i s_i.
\end{align*}
The uniqueness of the coordinate expression in the direct sum makes $\pi$ well-defined. For $r \in R$ and $x,y \in F$, the definition gives
\begin{align*}
\pi(x+y) &= \pi(x)+\pi(y), \\
\pi(rx) &= r\pi(x),
\end{align*}
so $\pi$ is an $R$-[linear map](/page/Linear%20Map).
[/step]
[step:Show that the canonical map onto $M$ is surjective]
Let $m \in M$. Since $m \in S$, the basis element $e_m \in F$ is defined. By construction,
\begin{align*}
\pi(e_m) = 1_R m = m.
\end{align*}
Thus every element $m \in M$ lies in the image of $\pi$, so $\pi: F \to M$ is surjective.
[/step]
[step:Prove that the constructed free module is projective]
We verify the lifting property for $F$. Let $q: N \to L$ be a surjective $R$-linear map of left $R$-modules, and let $f: F \to L$ be an $R$-linear map. For each $s \in S$, surjectivity of $q$ gives an element $n_s \in N$ such that
\begin{align*}
q(n_s) = f(e_s).
\end{align*}
Define
\begin{align*}
\widetilde{f}: F &\to N \\
\sum_{i=1}^{n} r_i e_{s_i} &\mapsto \sum_{i=1}^{n} r_i n_{s_i}.
\end{align*}
Again, the direct-sum coordinate expression makes this map well-defined, and the displayed formula shows that $\widetilde{f}$ is $R$-linear.
For every basis element $e_s$, we have
\begin{align*}
(q \circ \widetilde{f})(e_s) = q(n_s) = f(e_s).
\end{align*}
Since both $q \circ \widetilde{f}$ and $f$ are $R$-linear maps from $F$ and agree on the basis $\{e_s : s \in S\}$, they agree on all of $F$. Hence
\begin{align*}
q \circ \widetilde{f} = f.
\end{align*}
Therefore every $R$-linear map from $F$ lifts along every surjective $R$-linear map, so $F$ is projective.
[/step]
[step:Conclude that every module admits an epimorphism from a projective module]
For the arbitrary left $R$-module $M$, we have constructed a projective left $R$-module $F$ and a surjective $R$-linear map
\begin{align*}
\pi: F \to M.
\end{align*}
Thus every object of $R\operatorname{-Mod}$ receives an epimorphism from a projective object. Therefore $R\operatorname{-Mod}$ has enough projectives.
[/step]