Faits :
A.
A.a. A._, née en 1987, et B._, né en 1980, se sont mariés en 2006. Ils ont un fils, C._, né en 2008.
Le couple vit séparé depuis le 1er décembre 2011.
Par décision de mesures protectrices de l'union conjugale du 9 juillet 2013, la garde de l'enfant a, d'entente entre les parties, été attribuée à la mère, avec un droit de visite usuel en faveur du père.
A.b. Par requête de mesures provisionnelles urgentes du 15 février 2016, le père a notamment conclu à ce que la garde de son fils lui soit attribuée. Il invoquait que la mère avait rencontré un homme résidant à U._ (France), où elle comptait le rejoindre avec l'enfant, ce à quoi lui-même était opposé.
Statuant à titre superprovisionnel le 22 février 2016, le juge du Tribunal civil des Montagnes et du Val-de-Ruz (ci-après: juge civil) a fait interdiction à la mère de quitter la Suisse avec l'enfant et lui a ordonné, ainsi qu'à tout tiers, de remettre à l'autorité tous les documents d'identité de celui-ci, y compris le permis C.
A.c. Le 6 décembre 2016, l'épouse a déposé une demande unilatérale en divorce, concluant notamment à ce que la garde de l'enfant lui soit attribuée.
Par décision de mesures provisionnelles du 19 décembre 2016, le juge civil a attribué la garde de l'enfant au père. Statuant le 4 avril 2017 sur l'appel interjeté par la mère, la Cour d'appel civile du Tribunal cantonal neuchâtelois (ci-après: Cour d'appel civile) l'a rejeté et a confirmé la décision précitée.
Lors de l'audience de conciliation de la procédure de divorce du 29 août 2017, les parties se sont déclarées d'accord avec l'institution d'une curatelle au sens de l'<ref-law>. La décision y relative a été formalisée le 12 septembre 2017.
Le 2 octobre 2018, le juge civil a sollicité une enquête sociale auprès de l'Office de protection de l'enfant (OPE), de même qu'auprès du Service social international.
La curatrice au sens de l'<ref-law> a rendu un rapport de situation le 20 décembre 2018, relevant le conflit de loyauté dans lequel se trouvait l'enfant.
Le 24 juillet 2019, le Service social international a transmis au juge civil le rapport d'évaluation effectué par la Direction Générale Adjointe de la Solidarité, à V._ (France), daté du 8 juillet 2019. Ce rapport concluait que les conditions matérielles adaptées à l'accueil de l'enfant existaient auprès de la mère et que celle-ci était " en capacité d'assumer l'éducation et la garde de son fils ".
Dans son rapport d'enquête sociale du 8 octobre 2019, l'OPE a préconisé d'attribuer la garde de l'enfant à la mère et d'accorder un droit de visite aussi large que possible au père, la mesure de curatelle selon l'<ref-law> étant maintenue. Le 24 avril 2020, il a rendu un rapport complémentaire préconisant toujours cette solution.
Le 24 juin 2020, le juge civil a recueilli les déclarations de l'enfant. Celui-ci a indiqué vouloir vivre auprès de sa mère, qui lui manquait beaucoup, tout en soulignant que rien ne le dérangeait chez son père. II a précisé que cela le rendrait autant triste de ne pas vivre chez l'un ou chez l'autre.
B.
Par jugement du 2 décembre 2020, le juge civil a prononcé le divorce des parties. S'agissant du sort de l'enfant, seul litigieux, il a maintenu en commun l'exercice de l'autorité parentale, attribué au père la garde de celui-ci et fixé un droit de visite de la mère, " le plus largement possible d'entente entre les parties et, à défaut d'entente, au maximum un week-end par mois ainsi que la moitié des vacances scolaires ", la mesure de curatelle au sens de l'<ref-law> étant maintenue.
Par arrêt du 21 avril 2021, la Cour d'appel civile a rejeté l'appel formé par la mère et confirmé le jugement précité. Cette autorité a considéré en substance que le premier juge avait fait prévaloir avec raison le critère de la stabilité. Celle-ci était d'autant plus précieuse que l'enfant, qui entrait dans l'adolescence, nécessitait un suivi scolaire particulier, que ce suivi était d'ores et déjà en place dans notre pays, en plus d'une thérapie auprès du Centre neuchâtelois de psychiatrie (CNP), qu'il avait toujours vécu à W._ et qu'il y avait de nombreux amis.
C.
Par acte posté le 24 mai 2021, la mère exerce un recours en matière civile au Tribunal fédéral contre l'arrêt du 21 avril 2021. Elle conclut principalement à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision au sens des considérants. Subsidiairement, elle demande que l'arrêt entrepris soit réformé en ce sens que la garde de l'enfant lui est attribuée, un droit de visite en faveur du père étant fixé " à dire de justice ".
La recourante sollicite en outre d'être mise au bénéfice de l'assistance judiciaire pour la procédure fédérale.
Des déterminations n'ont pas été requises.

Considérant en droit :
1.
1.1. Déposé en temps utile (<ref-law>) et dans la forme légale (<ref-law>), le recours est dirigé contre une décision finale (<ref-law>) rendue sur recours par une autorité supérieure statuant en dernière instance cantonale (<ref-law>), dans une affaire civile (<ref-law>) de nature non pécuniaire. La recourante, qui a pris part à la procédure devant l'autorité précédente et a un intérêt digne de protection à l'annulation ou la modification de la décision attaquée, a qualité pour recourir (<ref-law>). Le recours en matière civile est donc recevable au regard des dispositions qui précèdent.
1.2. Le recours en matière civile étant une voie de réforme (<ref-law>), le recourant ne doit pas se borner à demander l'annulation de la décision attaquée et le renvoi de la cause à l'instance cantonale; il doit également, sous peine d'irrecevabilité, prendre des conclusions sur le fond du litige (<ref-ruling> consid. 1.3; <ref-ruling> consid. 1.3; <ref-ruling> consid. 3.1). Les conclusions réformatoires doivent de surcroît être déterminées et précises, c'est-à-dire indiquer exactement quelles modifications sont demandées (parmi plusieurs: arrêt 5A_307/2021 du 5 mai 2021 consid. 3.1). Cette règle souffre quelques exceptions. Parmi celles-ci, la pratique réserve le cas où la motivation du recours fait clairement apparaître en quoi l'arrêt attaqué doit être modifié (parmi plusieurs: arrêt 5A_817/2020 du 28 janvier 2021 consid. 1.2).
En l'espèce, la recourante prend une conclusion principale cassatoire et ne conclut que subsidiairement à la réforme de l'arrêt entrepris, en ce sens que la garde de l'enfant lui est attribuée, le droit de visite du père étant fixé " à dire de justice ". Le mémoire de recours n'apporte aucune précision quant à ce dernier point. La question de la recevabilité d'une telle conclusion au regard des exigences susvisées est ainsi douteuse, mais peut demeurer indécise vu le sort du recours.
2.
2.1. Le recours en matière civile peut être formé pour violation du droit, tel qu'il est délimité par les art. 95 s. LTF. Le Tribunal fédéral applique le droit d'office (<ref-law>). Cela étant, eu égard à l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, il n'examine en principe que les griefs soulevés (<ref-ruling> consid. 2.4 et les références). Le recourant doit par conséquent discuter les motifs de la décision entreprise et indiquer précisément en quoi il estime que l'autorité précédente a méconnu le droit (<ref-ruling> consid. 1.7.1; <ref-ruling> consid. 2.4 et la référence). Le Tribunal fédéral ne connaît par ailleurs de la violation de droits fondamentaux que si un tel grief a été expressément invoqué et motivé de façon claire et détaillée par le recourant (" principe d'allégation ", <ref-law>; <ref-ruling> consid. 2.1; <ref-ruling> consid. 5.1).
2.2. Le Tribunal fédéral statue sur la base des faits constatés dans la décision attaquée (<ref-law>). Il ne peut s'en écarter que si ces faits ont été établis de façon manifestement inexacte - à savoir arbitraire au sens de l'art. 9 Cst. (<ref-ruling> consid. 6.7; <ref-ruling> consid. 2.2 et la référence) - ou en violation du droit au sens de l'<ref-law> (<ref-law>), et si la correction du vice est susceptible d'influer sur le sort de la cause (<ref-law>). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (<ref-ruling> consid. 1.1 et la référence). Le recourant ne peut pas se borner à contredire les constatations litigieuses par ses propres allégations ou par l'exposé de sa propre appréciation des preuves; il doit indiquer de façon précise en quoi ces constatations sont arbitraires (<ref-ruling> consid. 1.4.3). Une critique des faits qui ne satisfait pas à cette exigence est irrecevable (<ref-law>; <ref-ruling> consid. 1.1; <ref-ruling> consid. 1.3.1 et la référence).
En l'occurrence, la partie intitulée " Faits essentiels " figurant aux pages 2 à 5 du recours sera ignorée, en tant que les faits qui y sont exposés ne sont pas expressément visés par un grief d'arbitraire dans l'établissement des preuves ou s'écartent de ceux contenus dans l'arrêt attaqué et que la recourante n'invoque, ni a fortiori ne démontre, qu'ils auraient été arbitrairement constatés ou que leur correction influerait sur le sort de la cause.
2.3. Aucun fait nouveau ni preuve nouvelle ne peut être présenté, à moins de résulter de la décision de l'autorité précédente (<ref-law>). Partant, les allégations et la pièce relatives aux propos que l'enfant aurait tenus " lors du week-end de l'Ascension du 13 au 16 mai 2021 ", soit postérieurement à l'arrêt querellé, sont irrecevables.
3.
La recourante reproche aux juges cantonaux de s'être écartés des rapports d'enquête sociale versés au dossier ainsi que de l'avis de l'enfant, lesquels plaident en faveur d'une attribution de la garde à la mère. Ne se fondant pas sur " une administration de[s] preuves conforme[s] aux exigences relevant des articles 150 ss CPC ", l'arrêt attaqué reposerait, selon la recourante, sur " une appréciation juridique erronée des faits pertinents " et, en tant qu'il attribue la garde au père, violerait l'<ref-law>, notamment au regard de l'intérêt supérieur de l'enfant.
Force est toutefois de constater qu'à l'appui de sa critique, la recourante se borne à discuter l'appréciation des preuves opérée par la cour cantonale comme si elle se trouvait devant une autorité d'appel auprès de laquelle les faits pourraient être rediscutés librement: outre qu'elle ne soulève aucun grief d'arbitraire (art. 9 Cst.), elle se contente d'exposer son propre point de vue sans démontrer, conformément aux exigences de motivation susrappelées (cf. supra consid. 2.2), le caractère prétendument insoutenable de l'appréciation des preuves à laquelle l'autorité cantonale a procédé. La recourante perd par ailleurs de vue que, selon la jurisprudence, le juge peut s'écarter des conclusions d'un rapport d'évaluation sociale à des conditions moins strictes que celles applicables lorsqu'il s'agit d'une expertise judiciaire (parmi plusieurs: arrêt 5A_381/2020 du 1er septembre 2020 consid. 4.1 et les références) et ne démontre pas à satisfaction que ces conditions ne seraient pas réalisées en l'espèce. S'agissant de l'avis de l'enfant, sauf à contester péremptoirement l'existence d'un conflit de loyauté préexistant qui ne " repose[rait] pas sur l'administration de preuves ", on ne trouve dans le recours aucune discussion argumentée des motifs ayant conduit la cour cantonale à le relativiser. Au demeurant, dans la mesure où la recourante s'en prend au juge de première instance qui se serait, lui aussi, écarté à tort de l'avis de l'enfant, la recourante se trompe de cible: seul l'arrêt de la Cour d'appel civile est susceptible de recours (<ref-law>).
4.
Au vu de ce qui précède, le recours, insuffisamment motivé, doit être déclaré irrecevable. Dès lors qu'il était d'emblée dénué de chances de succès, la requête d'assistance judiciaire pour la procédure fédérale ne saurait être agréée (<ref-law>). Les frais judiciaires sont en conséquence mis à la charge de la recourante, qui succombe (<ref-law>). Il n'y a pas lieu d'allouer de dépens à l'intimé, qui n'a pas été invité à se déterminer (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est irrecevable.
2.
La requête d'assistance judiciaire de la recourante est rejetée.
3.
Les frais judiciaires, arrêtés à 1'500 fr., sont mis à la charge de la recourante.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel civile du Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 12 novembre 2021
Au nom de la IIe Cour de droit civil
du Tribunal fédéral suisse
Le Président : Herrmann
La Greffière : Mairot